什么是概率算法?
概率算法也叫随机化算法。概率算法允许算法在执行过程中随机地选择下一个计算步骤。在很多情况下,算法在执行过程中面临选择时,随机性选择比最优选择省时,因此概率算法可以在很大程度上降低算法的复杂度。
概率算法的一个基本特征是对所求解问题的同一实例用同一概率算法求解两次可能得到完全不同的效果。这两次求解问题所需的时间甚至所得到的结果可能会有相当大的差别。
应用
用于游戏中的宝箱,陷阱之类的随机生成,可以改变生成的几率。
思想
运用产生随机数的函数rand()来随机生成一个数,和产生宝箱或陷阱的概率进行比较,如果小于就生成宝箱或陷阱,反之则不生成。
注意
rand()函数
rand(产生随机数)
表头文件: #include<stdlib.h>
定义函数 :int rand(void)
函数说明 :
因为rand() 的内部实现是用线性同余法做的,它不是真的随机数,只不过是因为其周期特别长,所以有一定的范围里可看成是随机的,rand() 会返回一随机数值,范围在 0 至 RAND_MAX 间。
在调用此函数产生随机数前,必须先利用 srand()设置好随机数种子,如果未设随机数种子,rand()在调用时会自动设随机数种子为 1。
rand()产生的是假随机数字,每次执行时是相同的。若要不同,以不同的值来初始化它,初始化的函数就是 srand()。
使用srand函数要包含time.h头文件,然后使用srand(time(0))来使用当前时间使随机数发生器随机化,这样就可以保证每两次运行时可以得到不同的随机数序列,同时这要求程序的两次运行的间隔超过1秒。
返回值:
返回 0 至 RAND_MAX 之间的随机整数值,RAND_MAX 的范围最少是在 32767 之间(int),即双字节(16位数)。
若用unsigned int 双字节是 65535,四字节是 4294967295 的整数范围。
0~RAND_MAX 每个数字被选中的机率是相同的。
代码实现
#include<iostream>
#include<stdlib.h>
#include<time.h>
using namespace std;
int main()
{
int TreasureBox = 20;//宝箱掉落的概率为20
srand(time(NULL));//使这个初始化种子保持着时刻不同
int pr = rand() % 101;//0-100
if (pr < TreasureBox)
{
cout << "掉落宝箱"<<endl;
return 1;
}
else
{
cout << "不掉落宝箱"<<endl;
return 0;
}
}
这只是一个简单的概率算法,如有意见欢迎在下面评论提出!