永发信息网

为什么这个程序用rand做出现相同的随机数

答案:6  悬赏:20  手机版
解决时间 2021-03-28 16:20
  • 提问者网友:蓝莓格格巫
  • 2021-03-27 23:29
为什么这个程序用rand做出现相同的随机数
最佳答案
  • 五星知识达人网友:逐風
  • 2021-03-28 00:23
你设定的当前时间为随机数种子,但是两条代码之间相差时间非常短,所以种子是一样的,随机数也就一样。
你可以这样:
srand(1);

magic1=rand()%10+1;

srand(200);

magic2=rnd()%10+1;追问括号1和200是随意设置??追答嗯,不要相同就好追问是不是想差越大随机数越多另外定义了magic后,不是可以用rand产生随机数吗,语句是magic=rand()+1怎么不行追答越多?追问越难以重复追答是否相差越大越难以重复,这个没有研究过。rand() 函数 返回0至RAND_MAX之间的随机整数值,RAND_MAX根据#define定义的,具体多少看是多少字节,最少是32767。所以,magic=rand()+1 有可能溢出,magic=rand()%10+1表示产生1 至10的整数(取余,余数只能是0-9),故如何写,根据你要的范围来。
全部回答
  • 1楼网友:长青诗
  • 2021-03-28 04:17
用time(0)作为时间种子!就不用unsigned()判断他的符号了!
直接来一个srand(time(NULL))就可以!
  • 2楼网友:duile
  • 2021-03-28 03:13
使用系统时间做种子吧
  • 3楼网友:空山清雨
  • 2021-03-28 01:54
你再用srand;初始化就可以追问怎么用?_?追答在magic1=rand()%10+1;下面用,就加srand;看看
  • 4楼网友:思契十里
  • 2021-03-28 01:12
rand()产生的是伪随机数字,每次执行时是相同的;若要不同,用函数srand()初始化它。追问不太懂如果想用rand实现 需要加入什么?
  • 5楼网友:举杯邀酒敬孤独
  • 2021-03-28 00:51
出现相同随机数肯定是种子问题导致的,不过你这里是不会的。。。。。还请把问题截图发上来追问那应该怎么做追答这个程序是没有问题的。。。不知你那里出现了什么情况?详细说一下追问出来的随机数是相同的追答很遗憾,我敲了一遍你的代码,我这里的数是有变化的。。。你可以换个编译器试试,至于楼下说得两次时间短种子一样。。。我很抱歉他似乎不大理解种子是怎么回事。。。追问我指的是用rand编译时的情况追答我已经说过了,你的代码没有问题,你可以换个编译器再试一下。。。。你可以尝试一下按照楼下所说的做,然后就真的每次运行就是一样的了
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯