#include "stdlibh"
#include "timeh"
/ main:some simple output /
void main()
{
int num1,num2;
srand((unsigned)time(NULL));
//产生两位数随机数
do
{
num1 = rand()%90+10;
num2 = rand()%90+10;
}while (num1<num2); //如果num2大于num1就重新生成 直到num1大于num2
if (num1>num2)
{
printf("大于");
}
else{
printf("小于");
}
}
电脑产生的随机数称为伪随机数,是通过算法模拟的,看上去和随机数一样,实际上能算出来的数就是可以预见的数(对用户来说不可预见,对电脑则是可预见),不是真正的随机数。
从一个大数“种子”开始重复某种迭代计算,通常是加减乘除加求余,种子可以取系统时间,因为用户不可能精确到微秒控制程序运行,就基本保证了每次生成数值的顺序不同
一般来说如果用数字电路产生的都是伪随机数,但由于循环时间太长可视为随机数。而现在有用模拟电路产生的随机数,主要原理是将热噪声放大,然后编码。
扩展资料
随机数的作用
随机数的使用历史已经有数千年。无论是抛硬币还是摇色子,目的是让随机概率决定结果。电脑中的随机数生成器的目的也是如此——生成随机不可预测的结果。
加密法要求数字不能被攻击者猜到,不能多次使用同样的数字。所以需要一种机制产生攻击者无法预测的数字,这些随机数对加密法至关重要,无论你是加密文件还是访问>
根据随机数的生成原理,我们把电脑随机数分为两类:“真”随机数和伪随机数。
要生成一个“真”随机数,电脑会检测电脑外部发生的某种物理现象。比如说,电脑可以测量某个原子的放射性衰变。根据量子理论,原子衰变是随机而不可测的,所以这就是宇宙中的“纯粹”随机性。攻击者永远无法预测原子衰变的发生时间,也就不可能猜出随机值。
参考资料来源:
百度百科——随机数
#include "stdafxh"
#include "iostream"
#include <string>
using namespace std;
void _tmain(int argc, _TCHAR argv[])
{//在这里定义了个goto语句(在java中已经不用,作为保留字,在c++适当的时候也可以用的),为的是输入的数字不超过64位
binary_judge:
cout<<"请输入二进制数后按回车"<<endl;
string str;
//从键盘中接受字符串的输入
cin>>str;
//获取输入的字符串的长度放到long类型变量里
long a = strlength();
//如果输入的超过64位就进行走goto语句
if(a>64){
goto binary_judge;
} long b =a;
long sum=1;
//记录每一位二进制最后的总和,先初始化为0,c++中整形一定要初始化变量,否则内存中会自动给一个随机值。
long sum2 =0;
//通过for循环取得字符串进行判断与 *** 作。
for(long i=0;i<a;i++){
if(str[i]=='1'){
for(long j =0;j<b-1;j++){
sum = 2sum;
}
sum2= sum2+sum;
}
sum =1;
b--; }
cout<<str<<"的二进制是:"<<sum2<<endl;
//让控制台暂停
system("pause");
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)