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

如何将随机生成的这10位数用数码管显示出来?解决者将赠送更多的悬赏!!!... 如何将随机生成的这10位数用数码管显示出来?解决者将赠送更多的悬赏!!! 展开
 我来答
江湖修一叶Dp
2019-05-11
知道答主
回答量:48
采纳率:0%
帮助的人:2.7万
展开全部
//正好我在做一个抽奖程序,有一段随机数去重代码,你可以借鉴一下。
//这种算法比较节省空间(至少我是这么觉得)
//用一个unsigned int型变量,记录已生成的随机数,代码如下
#include <reg51.h>
#include<stdlib.h>
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;
    }
}
//你根据你的需求改吧,求采纳。
zhxiufan
2012-09-22 · 知道合伙人软件行家
zhxiufan
知道合伙人软件行家
采纳数:14923 获赞数:38382
国家科技进步奖

向TA提问 私信TA
展开全部
只有0~9十个数,随机产生重复是不可能的,一般而言,随机数都是一个浮点数,获得整数都是经过四舍五入等处理,怎么可能不重复,所以这个愿望是不能实现的,除非将重复数去除,也就是过滤掉。
追问
用什么做随机种子啊?
追答
先调用srand(int n)这就是种子
再调用rand()
要产生0~9之间的数n=9就可以了。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
a451993547
2012-09-21 · TA获得超过1593个赞
知道小有建树答主
回答量:595
采纳率:100%
帮助的人:703万
展开全部
用电容充放电不确定值的方式作为随机数种子。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式