通过计数器获得随机数种子

2019-07-21 07:00发布

写了个小游戏需要一个随机数种子,想通过读取定时器计数寄存器的值来实现的。
前面有加一个按键的程序,因为按键时间不同所以每次计数器读出的数值应该是不同的我是那么想的,但是实际上并不行,求解。。。
定时器是开的,TIM7就是我用来放按键检测程序的定时器。
另外有一个很神奇的现象是程序刚烧进去第一次运行和第二次运行的结果是不一样的,但是之后每一次的运行就都一样了。。。

        while( TouchEvent!=CLICK_ONCE ); //按键等待程序
        srand( TIM_GetCounter(TIM7) );      //根据计数器数值产生随机数,这里用srand( TIM7->CNT );也不行
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
8条回答
nashui_sx
2019-07-21 19:25
zdyz123123 发表于 2018-12-9 21:20
哦这是根据温度来设置随机种子啊,可以是可以但是很麻烦啊。。。
我就想知道为啥我这方法不行呢

srand 是随机数种子,rand产生随机数,初始化一次以后就不用管了呀,直接用rand就可以了,感觉比你的按键简单还,最起码省个定时器和按键吧

你可以提前开定时器,按键按下的时候读取定时器值做种子,rand产生随机数。不过最好的还是弄个数组,按10次 平均值作为种子,产生随机数,理论都是可以的

一周热门 更多>