c语言中怎样使产生的随机数是二位整数

c语言中怎样使产生的随机数是二位整数,第1张

#include <stdioh>
#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("小于");
}
}

电脑产生的随机数称为伪随机数,是通过算法模拟的,看上去和随机数一样,实际上能算出来的数就是可以预见的数(对用户来说不可预见,对电脑则是可预见),不是真正的随机数。

从一个大数“种子”开始重复某种迭代计算,通常是加减乘除加求余,种子可以取系统时间,因为用户不可能精确到微秒控制程序运行,就基本保证了每次生成数值的顺序不同

一般来说如果用数字电路产生的都是伪随机数,但由于循环时间太长可视为随机数。而现在有用模拟电路产生的随机数,主要原理是将热噪声放大,然后编码。

扩展资料

随机数的作用

随机数的使用历史已经有数千年。无论是抛硬币还是摇色子,目的是让随机概率决定结果。电脑中的随机数生成器的目的也是如此——生成随机不可预测的结果。

加密法要求数字不能被攻击者猜到,不能多次使用同样的数字。所以需要一种机制产生攻击者无法预测的数字,这些随机数对加密法至关重要,无论你是加密文件还是访问>

根据随机数的生成原理,我们把电脑随机数分为两类:“真”随机数和伪随机数。

要生成一个“真”随机数,电脑会检测电脑外部发生的某种物理现象。比如说,电脑可以测量某个原子的放射性衰变。根据量子理论,原子衰变是随机而不可测的,所以这就是宇宙中的“纯粹”随机性。攻击者永远无法预测原子衰变的发生时间,也就不可能猜出随机值。

参考资料来源:

百度百科——随机数

楼主在题目中不应该说是超长的二进制的,二进制最多64位(0和1组成),可以用long型定义位数变量,需你需要加强一下对二进制的理解。无非就是对0和1的 *** 作,下面是我写的一段c++的二进制转换成10进制的一段代码:你可以直接贴过去运行看看,主要是一个算法思想,不需要局限于具体是哪个语言,思想都是一样,不同的只是语法
#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");
}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13408251.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-30
下一篇 2023-07-30

发表评论

登录后才能评论

评论列表(0条)

保存