随机数算法的小总结

生成方式

总共有两种算法,第一种就是用自带的srand(time(0));和rand()即可,如果需要那么使用余数即可。rand()%5+1;这个就表示的1-5的随机数。实际上rand()产生的随机数是从1到INT_MAX的。(rand()%6)+5;表示的就是5-10(闭区间)的随机数。

代码

while(1)
	{
		srand(time(0));
		cout<<(rand()%6)+5;
	}

另一个就是线性同余发生器满足以下的递推(这个我个人感觉不如rand好用,这个如果公式里面的数写的不当可能会出错,也许是我不大会用,而且这个数组是有周期的!!!最多以p-1为周期)

    num[i]=(t*num[i-1])%p;

其中num[0]需要选择一个不是0或者1?(待验证)并且小于等于p的数,p是这些随机数的范围,是从1-p-1闭区间;t是一个常数,可以随便设置会变成其他的随机数.

原文地址:https://www.cnblogs.com/baccano-acmer/p/9777512.html