精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● 软件开发>>软件体系结构及资料汇编>>Re: 求助:随机数的算法

主题:Re: 求助:随机数的算法
发信人: egcs()
整理人: zelor(2000-04-12 22:22:20), 站内信件
【 在 terry_mao99 (terry_mao) 的大作中提到: 】
: 若要从1至33中任意取7个数字,
: 组成一个没有排列顺序的数组,
: 它的概率要求为672万分之一,
: 请高手指教优秀算法!!!!
:    .......
  这是一个利用 64 bit 线性反馈移位寄存器产生随机数的算法,其随机指标
为 2^-64 = 5.4210108624275221700372640043e-20
static unsigned __int32 __r32[2] = { 3141592653, 2718281828 };
int GetNextInteger()
{
int i;
unsigned __int32 t32, v32 = 0;

for(i = 0; i < 31; i++)
{
t32 = __r32[0] ^ (__r32[0] >> 2) ^ (__r32[0] >> 3) ^ (__r32[1
] >> 31);

        __r32[0] = (__r32[0] >> 1) | (__r32[1] << 31);
__r32[1] = (__r32[1] >> 1) |(t32 << 31);

v32 = (v32 << 1) |(__r32[0] & 1);
}
return v32;
}


--
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.104.35.56]

[关闭][返回]