小小の白 发表于 2020-10-6 15:57:45

我明白了!!!

sunyt 发表于 2021-7-5 15:04:10

C语言的库,噩梦啊


三刀流.索隆 发表于 2021-8-6 23:03:23

打卡

雨中漫步~ 发表于 2021-10-7 11:04:36

ngchiuyuen 发表于 2019-11-6 23:08
为什么srand((unsigned)time(&t));放到for循环里面,生成的随机数是一样的?放到外面就不一样?

for 循环运行速度非常快,在一秒之内就运行完成了,而 time() 函数得到的时间只能精确到秒,所以每次循环得到的时间都是一样的,这样一来,种子也就是一样的,随机数也就一样了

之皮呀 发表于 2021-11-19 11:49:07

豆芽菜丶 发表于 2022-1-15 18:57:29

111

htfc786 发表于 2022-1-17 22:00:45

ngchiuyuen 发表于 2019-11-6 23:08
为什么srand((unsigned)time(&t));放到for循环里面,生成的随机数是一样的?放到外面就不一样?

可能是因为种子只设置了一遍吧

htfc786 发表于 2022-1-17 22:02:54

易烊千玺女友 发表于 2020-4-26 21:41
#include
#include
#include


因为种子只设置了一遍吧
改:

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

#define A 10

int main()
{
      int i;
      time_t t;
      
      
      
      for(i=1;i<A;i++)
      {
                srand((unsigned)time(&t));
                printf("%d\n",rand()%1000);
      }
      system("pause");
      return 0;
}

HandsonYe 发表于 2022-3-14 13:52:13

{:10_330:}

HandsonYe 发表于 2022-3-15 12:47:58

想要生成的随机数不重复该怎么做呢{:10_272:}

anzhexuan666 发表于 2022-3-23 10:50:08

长知识呢

阿伟同学 发表于 2022-4-2 15:50:19

感觉rand()这个函数在播种以后连续调用的话,第一次输出序列中第一个值,第二次输出序列中第二个值,这样依次下去,所以在for循环外可以得到不同的随机值;但在for循环里的话相当于连续播种了同一个种子(因为for循环速度太快不到一秒)这样每次只能输出序列的第一个值,所以结果当然是几个同样的值。{:10_257:}

山小 发表于 2022-6-10 15:23:48

朕已阅

两手空空儿 发表于 2022-6-13 20:49:00

ngchiuyuen 发表于 2019-11-6 23:08
为什么srand((unsigned)time(&t));放到for循环里面,生成的随机数是一样的?放到外面就不一样?

这个我也没明白。。。

两手空空儿 发表于 2022-6-13 21:05:08

而使用相同的种子序列调用 range 函数会导致生成相同的随机数序列。

额外减小 发表于 2022-7-21 14:53:19

time_t也是数据类型吗

lslhj 发表于 2022-7-30 15:41:33

还差几 发表于 2017-9-10 10:50
如何将取值范围调道0~9

%10

水边的小姑娘 发表于 2022-10-9 16:22:20

学习

铭凡 发表于 2022-12-6 01:43:29

本帖最后由 铭凡 于 2022-12-6 15:02 编辑

提问:我要做一个摇骰子的程序,然后将答案累加,数据范围是0~23,也就是说,如果达到24就变成0,25变成1

使用这个函数,i =range()%5, i++

这样相当于i随机取1~6(原来是0~5)

但是累加结果无论我程序运行几次,都是几个重复的数

6 6 5
11 12 10
12 13 15
15 19 21
17 23 23
23 1 2
3 2 6
4 5 10......

怎么办?有人可以帮帮我吗?

已解决,我没用srange,没看仔细

@小甲鱼

lskjlx 发表于 2022-12-7 21:19:06

学到了{:10_245:}

页: 1 [2] 3
查看完整版本: rand -- 伪随机数生成器