C++编译中用srand()和rand()%100产生的随机数为什么有两个以上相同的数
你好,求解,代码如下:#include<iostream>#include<ctime>#include<cstdlib>usingnamespacestd;intmai...
你好,求解,代码如下:
#include<iostream>#include<ctime>#include<cstdlib>using namespace std;
int main(){ const int n=15; int Rn,temp; int suiji[n]; srand((int)time(0)); for(int i=0;i<n;) { Rn=rand()%100; if(Rn%2==1&&Rn>=10&&Rn<=90) { suiji[i]=Rn; i++; } } for(int j=n-1;j>=0;j--) for(i=0;i<n;i++) { if(suiji[i]<suiji[i+1]) { temp=suiji[i]; suiji[i]=suiji[i+1]; suiji[i+1]=temp; } } for(i=0;i<n;i++) { cout<<suiji[i]<<endl; } return 0;} 展开
#include<iostream>#include<ctime>#include<cstdlib>using namespace std;
int main(){ const int n=15; int Rn,temp; int suiji[n]; srand((int)time(0)); for(int i=0;i<n;) { Rn=rand()%100; if(Rn%2==1&&Rn>=10&&Rn<=90) { suiji[i]=Rn; i++; } } for(int j=n-1;j>=0;j--) for(i=0;i<n;i++) { if(suiji[i]<suiji[i+1]) { temp=suiji[i]; suiji[i]=suiji[i+1]; suiji[i+1]=temp; } } for(i=0;i<n;i++) { cout<<suiji[i]<<endl; } return 0;} 展开
2个回答
展开全部
rand函数本身有这个bug,在同一秒内取值可能会相同。
追问
有没有一种方法产生完全不同的随机数?
追答
你可以使用C++新标准random来产生随机数
#include <random>
#include <iostream>
int main()
{
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_int_distribution<> dis(1, 6);
for(int n=0; n<10; ++n)
std::cout << dis(gen) << ' ';
std::cout << '\n';
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询