小小の白
发表于 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:}