标题: 关于单片机C语言随机函数rand()的使用 [打印本页]

作者: 3花木城    时间: 2022-3-24 13:21
标题: 关于单片机C语言随机函数rand()的使用
#include<STC15W.H>
#include <stdlib.h>           //随机函数包含
P2=rand()%8;    //获得0~8之间的随机数,函数rand()在stdlib.h

假设P2接的LED口,1秒钟变换一个随机数,会出现这样的情况:3  3   2   3   6  3  ……。
但是想要的结果是: 4   3   7    1    6   2   5  这样,就像音乐播放器一样,随机播放,就把所有的歌随机排了个序,从上到下放一遍。
百度查要加这个参数 seed  ,查来查去也没看明白

作者: Hephaestus    时间: 2022-3-24 21:38
seed要用定时器的值来赋予的。
作者: daemondong    时间: 2022-3-25 09:06
这个和seed无关,你要的算法叫发。
1 生成 8 以内的随机数 rand()%8
2 生成 7 以内的随机数 rand()%7
3 生成 6 以内的随机数 rand()%6
...
4 生成 1 以内的随机数,最后一张。

作者: lkc8210    时间: 2022-3-25 09:26
daemondong 发表于 2022-3-25 09:06
这个和seed无关,你要的算法叫
1 生成 8 以内的随机数 rand()%8
2 生成 7 以内的随机数 rand()%7

重点是如何保证不重复
作者: daemondong    时间: 2022-3-25 12:49
有很多办法,拿数组举例
1 初始化  a[8]={1,2,3,4,5,6,7,8}
2 取 rand()%8 比如 2, 取出 a[2] =2 , 然后 a[2]=a[8]  取出的数就去除了
3 取 rand()%7 比如 2, 取出 a[2] =8 , 然后 a[2]=a[7]  取出的数就去除了
... 直到为1

作者: xws245925587    时间: 2022-3-25 13:07
设置不同的随机种子,srand()
作者: 3花木城    时间: 2022-3-25 14:09
daemondong 发表于 2022-3-25 12:49
有很多办法,拿数组举例
1 初始化  a[8]={1,2,3,4,5,6,7,8}
2 取 rand()%8 比如 2, 取出 a[2] =2 , 然后 ...

我试试
作者: Hephaestus    时间: 2022-3-25 15:00
daemondong 发表于 2022-3-25 09:06
这个和seed无关,你要的算法叫发
1 生成 8 以内的随机数 rand()%8
2 生成 7 以内的随机数 rand()%7

不可能无关。rand()产生的随机数不是天上掉下来的,好好看书吧!
作者: lkc8210    时间: 2022-3-25 15:59
daemondong 发表于 2022-3-25 12:49
有很多办法,拿数组举例
1 初始化  a[8]={1,2,3,4,5,6,7,8}
2 取 rand()%8 比如 2, 取出 a[2] =2 , 然后 ...

受教了~




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1