猫史档案馆


【求助】srand函数到底怎么使用???

用户:爵士OIer爵士OIer查看:4 回复:2 评论:4 创建时间:2019-10-07T07:27:31


#include<bits/stdc++.h>
using namespace std;
int main(){
	int a;
	for(int i=0;i<100;i++){
		srand(rand()%4444);
		a=rand()%(10)+11;
		cout<<a<<"  ";
	}
	return 0;
} 

没加srand是伪随机数

加了为什么还是???


回复

上一页1 页 / 共 1下一页
天马神坑_真天马神坑_真

给你个我写的函数:

int suiji(int a, int b){
	int suiji;
	srand (time (0));
	suiji = rand()%(b-a+1)+a;
	return suiji;
}//从a~b中随机选一个整数

别忘记:

#include<cstdlib>
#include<ctime>

或者:

#include<bits/stdc++.h>

点赞0


评论


急_开_锁_办_证810864急_开_锁_办_证810864

srand()函数的参数就是随机数的种子,要尽可能保证每次程序运行时传递给srand()的参数不一样(其参数的不同取值可以不是等概率分布的,只要尽量不同就行),srand()运行后就能保证稍后用rand()函数摇出来的数看上去会是比较随机的。

 

如果rand()是固定的值,那么rand() % 4444也会是固定的值,那么把它作为参数传递给srand()还是会导致每次运行的结果一样。

 

而且srand()函数只能用一次,然后可以多次使用rand()函数摇不同的随机数。把srand()写在自定义函数或循环里都不是正确的用法,超过一次以上的对srand()函数的调用会被系统忽略掉。

 

计算机的随机数算法生成的都是伪随机数,不管用什么方式模拟都是。用瞬间抓取的系统时间作为srand()函数的参数,只是比较流行的一种权宜之计。如果你取随机数的频率特别快,这种方法还是会时不时连续给出几个相同的数。物理世界里已知的真随机性只出现在量子现象里。这种随机性无法用现有科学解释,可能永远也无法解释,但通过实验观察到它的存在,没人能证实其随机性的由来。你可以在每一本主流量子力学教程里看到作者对这个问题避而不谈的态度。

点赞0


评论