【发布时间】:2011-10-02 11:49:59
【问题描述】:
这只是好奇的问题,我在想,以防万一我在开头使用
c++ rand() 函数功能srand(time(0)),它将生成所有不同的随机数,所以我尝试了会发生什么,当给定数组的 sizeof 大得多时,例如给定两个整数范围内的元素数,当数组为声明为int a [100],随机数范围来自[15 75],我认为代码应该给我错误,比如数字多于范围或类似的东西,但它生成随机重复值,为什么?这是代码
#include <iostream>
#include <cstdlib>
#include <time.h>
using namespace std;
int main(){
int min=15;
int max=75;
int a[100];
srand(time(0));
for (int i=0;i<100;i++) {
a[i]=min+rand()%(max-min+1);
}
for (int i=0;i<100;i++) {
cout<<a[i]<< " ";
}
return 0;
}
【问题讨论】:
-
“它会生成所有不同的随机数”——你为什么这么认为?
-
当你掷骰子 6 次时,你不会期望掷出 1、2、3、4、5、6 吧? (尽管有可能)。如果你掷骰子超过 6 次,骰子也不会显示错误:)
-
不清楚你在说什么。坐下来,深呼吸,喝点咖啡,然后花一些时间来制定你的下一个评论/编辑。 在点击 Enter 之前确保它有意义。
-
您似乎真的想要一个无序的唯一数字列表?因为这与生成(伪)随机数完全不同。
-
@jrok:掷骰子六次后,下一次掷骰子当然会例外 :-) OP:如果数字完全不同,它们就不会是均匀随机的,他们会不会-- 因为你已经知道下一个不会是哪个数字,这对于均匀随机数来说是不正确的。