随机数一

#include <iostream>

#include <map>

using namespace std ;

#include <time.h>

#include <math.h>

//C语言的库函数rand有以下两个可改进之处

//范围太小,才3万多,改成40亿多

//需要srand,如果不srand 默认只是1。CRand默认值是clock()。注意:Windows下GetTickCount更精确

#define ULONG unsigned long

//接口

class IRand

{

public:

//不实现SetSeed防止多次SetSeed引起种子值相同。构造函数中初始化种子

virtual ULONG Rand()=0;

};

class CRand : public IRand

{

public:

CRand(ULONG s1 = clock(),ULONG s2 = time(NULL) )

{

m_iSeed1 = s1 ;

m_iSeed2 = s2 ;

}

ULONG Rand()

{

ULONG b;

b = m_iSeed1 ^ (m_iSeed1 >> 2) ^ (m_iSeed1 >> 6) ^ (m_iSeed1 >> 7);

m_iSeed1 = (m_iSeed1 >> 1) | (~b << 31);

b = (m_iSeed2 << 1) ^ (m_iSeed2 << 2) ^ (m_iSeed1 << 3) ^ (m_iSeed2 << 4);

m_iSeed2 = (m_iSeed2 << 1) | (~b >> 31);

return m_iSeed1 ^ m_iSeed2;

}

protected:

ULONG m_iSeed1;

ULONG m_iSeed2;

};

void main()

{

const int n = 100;

CRand r ;

for( int i = 0 ; i < n ; i++ )

{

cout << r.Rand() << endl ;

}

}

时间: 2024-10-10 07:24:00

随机数一的相关文章

shell系列生成随机数的方法

一: RANDOM echo $RANDOM RANDOM的随机数是有范围的1--32767,一般用它是可以被破解的 1.2  生成八位数的随机密码: echo $(($RANDOM+11111111)) 二:MD5sum 随机加密方法 生成的密码较长 取9位数密码: echo $RADDOM |md5sum|cut -c 2-9 三:通过openssl产生随机数 [[email protected] tmp]# openssl rand -base64 8 hInfIvtfOSk= [[ema

javaScript随机数取值方法

Math.random()方法返回0到1之间的一个随机数,不包括0和1 如若想取的一个范围的随机数可套用下面的公式: 一.X+开始数-1=结束数 二.Math.floor(Math.random()*X+开始数) 注:Math.floor()向下舍入,去掉小数点后数 例: //若想取的5到10之间的数,套用公式:①X+开始数-1=结束数//可得出X为6//②Math.floor(Math.random()*X+开始数)//for(var i=0;i<10;i++){ document.write

重复10个1~60顺序且不重复的随机数

$flag = 1; for ($i = 0; $i < 10; $i++) {     $data['mobile'] = $evaluate_mobile;     //随机时间     $second = rand($flag, 6 * ($i + 1));//重复10个1~60顺序且不重复的随机数     $flag = $second + 1;//加1是未免与上一结果重复     $data['second'] = $second;     $result[] = $data; }

r语言之生成随机序列,随机数生成函数及用法

(1)生成正态分布随机数: rnorm(n,mean,sd)     其中,n表示生成的随机数个数,mean表示正态分布均值,sd表示正态分布标准差 > rnorm(5,0,2)[1] -5.31147765 0.09634197 0.35276104 -1.94548466 0.54533883 (2)生成均匀分布随机数: runif(n,min,max)     其中,n表示生成的随机数个数,min表示均匀分布最小值,max表示均匀分布最大值 > runif(5,0,10)[1] 9.74

随机数和随机数种子(转)

在计算机中并没有一个真正的随机数发生器,但是可以做到使产生的数字重复率很低,这样看起来好象是真正的随机数,实现这一功能的程序叫伪随机数发生器. 有关如何产生随机数的理论有许多,如果要详细地讨论,需要厚厚的一本书的篇幅.不管用什么方法实现随机数发生器,都必须给它提供一个名为“种子”的初始值.而且这个值最好是随机的,或者至少这个值是伪随机的.“种子”的值通常是用快速计数寄存器或移位寄存器来生成的. 下面讲一讲在C语言里所提供的随机数发生器的用法.现在的C编译器都提供了一个基于ANSI标准的伪随机数发

六爻预测等各种预测术的本质探讨之随机数猜想

对于各类预测术,比如六爻术,源于周易八卦.大家对预测术的观点泾渭分明,要么很相信,要么很不屑.或者有些人认为信则有不信则无. 当然我本人是信奉现代科学的,不过预测术确实有不可思议的地方,对过去和未来的分析不是简单的一句"巧合,概率论"能说的过去的.现经过本人的一番分析,试图对各类预测术的本质来个大起底. 其实,预测术不神奇,更不是有什么鬼神之力.而且也不能说古人比现在人更聪明.预测术的外圈是遵循一定规律的一整套规则,这些规则是古代在不停的经验总结中逐步完善的.换句话说,只要你自己能遵循

SQL Server生成指定范围内的随机数

在开发中很多时候,我们都会遇到这种需要生成一个指定范围随机数的情况.而且在很多语言中比如Java.C#.SQl等,都会有一个函数生成一个类似于0.234273983423789的随机小数,而所有的随机数都是通过这个最基本的随机数(0.234273983423789)变化过来的. 下面我说一下生成指定范围随机数的思路,比如我要生成一个100-999范围内的随机数,我就要保证我写的生成随机数的表达式所生成的值,最大是999,最小是100.还有就是要明白一个数学里的小道理,0.99去乘一个数字所得的结

Spring Boot? 配置文件详解:自定义属性、随机数、多环境配置等

自定义属性与加载 我们在使用Spring Boot的时候,通常也需要定义一些自己使用的属性,我们可以如下方式直接定义: application-dev.yml com.didispace.blog: name: 程序猿DD title: Spring Boot教程 desc: ${com.didispace.blog.name}正在努力写<${com.didispace.blog.title}> # 随机字符串 value: ${random.value} # 随机int number: ${

牛客网华为机试训练第3题 明明的随机数

今天花了一下午才把明明的随机数这个搞明白,期间和牛客网的编译器殊死搏斗.一直发现在本地编译器运行成功,但是在牛客上的老师不能通过.整的十分的恼火和焦躁.后来看到了相同的问题,才发现解决之道. 时间限制:1秒 空间限制:32768K 热度指数:222608 本题知识点: 数组 算法知识视频讲解 题目描述 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不

C#生成验证码之四位随机数

1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Threading.Tasks; 9 using System.Windows.Forms; 10 11 namespace Wi