抽奖程序的实现

Posted 随意就好欧巴

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了抽奖程序的实现相关的知识,希望对你有一定的参考价值。

rand    伪随机数 
srand  种子
时钟

rand()%100;产生0-99的随机数。高级点的,假如要产生16-59之间的数,你可以这样写:rand()%44+16(这里44由59-16+1得到)。其他情况如法炮制!


随机50-55

第一个数:55-50+1=6
rand()%6+50

大部分程序和语言中的随机数,确实都只是伪随机。是由可确定的函数,通过一个种子,产生的伪随机数。这意味着:如果知道了种子,或者已经产生的随机数,都可能获得接下来随机数序列的信息(可预测性)。

直观来想,计算机是一种可确定,可预测的的设备,想通过一行一行的确定的代码自身产生真随机,显然不可能。但是,我们或许可以迂回一下……

实现方法简单说就是软硬结合,或者说,引入系统外的变量(把软件,代码,算法想象成一个封闭的系统)。

一个典型的例子就是 UNIX 内核中的随机数发生器(/dev/random),它在理论上能产生真随机。即这个随机数的生成,独立于生成函数,这时我们说这个产生器是非确定的。

具体来讲,UNIX 维护了一个熵池,不断收集非确定性的设备事件,即机器运行环境中产生的硬件噪音来作为种子。

比如说:时钟,IO 请求的响应时间,特定硬件中断的时间间隔,键盘敲击速度,鼠标位置变化,甚至周围的电磁波等等……直观地说,你每按一次键盘,动一下鼠标,邻居家 wifi 信号强度变化,磁盘写入速度,等等信号,都可能被用来生成随机数。


所以,结论是,程序和算法本身不能产生真随机,但是计算机系统作为整体可以迂回产生统计意义上的真随机。
 
 

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void main(){
int l_v1;
for(size_t i=0;i<10;i++)
{
l_v1=rand();
printf("l_v1 is%d\n",l_v1);
}
system("pause");
}
//我自己封装的函数
int 去时间戳() {
time_t l_now;
time(&l_now);
return(int)l_now;
}
void 置随机数种子(int p_v1){
srand(p_v1);
}
int 取随机种子(int p_最小值,int p_最大值){
return rand() % (p_最大值-p_最小值+1)+p_最小值;
}

 

 

 

 

以上是关于抽奖程序的实现的主要内容,如果未能解决你的问题,请参考以下文章

Pythontkinter应用之抽奖程序

用java编写一个彩票抽奖程序

jquery实现抽奖

javascript实现抽奖程序

微信小程序实现抽奖大转盘

微信小程序实现抽奖大转盘