用C语言编写,使用51单片机生成0--9不重复数字。请问用什么做随机种子,如何产生不重复随机数?

2024-12-23 14:50:02
推荐回答(3个)
回答1:

//正好我在做一个抽奖程序,有一段随机数去重代码,你可以借鉴一下。
//这种算法比较节省空间(至少我是这么觉得)
//用一个unsigned int型变量,记录已生成的随机数,代码如下
#include 
#include
unsigned int random = 0x00;
unsigned char nums[10] = {0};
void myrand()
{
    unsigned char temp,i;
    for(i=0;i<10,++i)
    {
        temp=rand();
        if((random>>temp)&0x01==0x00)
            nums[i]=temp;
    }
}
//你根据你的需求改吧,求采纳。

回答2:

只有0~9十个数,随机产生重复是不可能的,一般而言,随机数都是一个浮点数,获得整数都是经过四舍五入等处理,怎么可能不重复,所以这个愿望是不能实现的,除非将重复数去除,也就是过滤掉。

回答3:

用电容充放电不确定值的方式作为随机数种子。