求助,第一次随机数的生成与赋值问题

指环王与张两万 2017-12-13 10:55:14
各位大佬,我是c++小白。我想由数组的元素下表作为随机数的种子发生器,并且进行取余运算来得到一个小于1001的正整数;但是在对于数组的元素赋值的时候,第一个数即a[0]的值总是-858993460,这是为什么啊
void Creatdata(int set[],int num){
int i;
for(i=0;i<num;i++){
srand(i);
set[i]=rand()%1001;
}
}
...全文
324 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
WarrenZ123 2017-12-15
  • 打赏
  • 举报
回复
学习了,谢谢
wodexiaojidan 2017-12-14
  • 打赏
  • 举报
回复
i在rand()后是个固定数了 , 可能越界了, 固定读取一个地址上的垃圾内存
wodexiaojidan 2017-12-14
  • 打赏
  • 举报
回复
srand(i + 1)就不会出现负数,但是你这样做使伪随机变成真正有规律的结果,srand(unsigned int)的参数尽量要无规律所寻
自信男孩 2017-12-14
  • 打赏
  • 举报
回复
void Creatdata(int set[],int num){
int i;
srand(time(NULL));
for(i=0;i<num;i++){
    set[i]=rand()%1001;
}
}
srand函数使用有问题。 另外,记着include<time.h>
hongwenjun 2017-12-14
  • 打赏
  • 举报
回复
srand (time(NULL));   // 使用时间做种子数
  printf ("Random number: %d\n", rand()%100);
赵4老师 2017-12-14
  • 打赏
  • 举报
回复
srand应该在程序初始化时调用1次。不能多次调用。
ooolinux 2017-12-14
  • 打赏
  • 举报
回复
仅供参考: C语言/C++伪随机数原理,srand、rand函数的一种实现 http://blog.163.com/tab_98/blog/static/119240972017102465518574/
布里茨_0 2017-12-14
  • 打赏
  • 举报
回复
srand(i)是伪随机数的种子,种子一样,产生的随机序列就是一样的;一般用程序运行的当前时间做伪随机数的种子
wodexiaojidan 2017-12-14
  • 打赏
  • 举报
回复
引用 5 楼 cfjtaishan 的回复:
[quote=引用 4 楼 wodexiaojidan 的回复:] i在rand()后是个固定数了 , 可能越界了, 固定读取一个地址上的垃圾内存
srand();是生成随机数种子,怎么会修改i的值呢?i的修改只会出现for循环里的i++; 因此不会出现越界和垃圾值吧。[/quote]当时在搞手上的事,混在一起,说错了。。。这里除了用法上不妥,代码没太大问题,得把主程贴出来才好找原因了。
自信男孩 2017-12-14
  • 打赏
  • 举报
回复
引用 4 楼 wodexiaojidan 的回复:
i在rand()后是个固定数了 , 可能越界了, 固定读取一个地址上的垃圾内存
srand();是生成随机数种子,怎么会修改i的值呢?i的修改只会出现for循环里的i++; 因此不会出现越界和垃圾值吧。

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧