c语言编程设置随机数字,随机数生成器C语言

这个东西,对于数学上的分析我看明白了90%.但并未做深入研究.这个代码是抄来的,核心部分是抄来的.感觉不错.

生成固定的随机数序列,只要种子一样的话.这个随机数生成器比较透明,而且较容易改动.很不错.

每次实现代码的时候,都会发现很多问题.而且,一旦写上了代码,时光就飞逝了...很不错.

好吧,帖出来吧.又是来网吧,又是边下电影边写Blog,呵呵.很不错.

/*10-35-11-02-08-20.11.c -- 第十章第三十五题*/

#include

#define FALSE (0)

#define TRUE (1)

#define A (48271L)

#define M (2147486647L)

#define Q (M / A)

#define R (M % A)

unsigned long int Seed ;

int main (void) ;

int eatEnter (void) ;

void initialize (unsigned long int initial_value) ;

double random (void) ;

int main (void)

{

unsigned long int initial_value ;

char ch ;

printf ("Please input a initial value (>= 0, enter 'q' to quit.):") ;

while (scanf ("%lu", &initial_value) != 0)

{

printf ("Initial value has been initialized is : %lu/n", initial_value) ;

eatEnter () ;

initialize (initial_value) ;

puts ("Enter 'q' to input a new initial value and enter any key else to generate a random value again.") ;

while ((ch = getchar ()) != 'q')

{

if (TRUE == eatEnter ())

break ;

printf ("It is %lf./n", random ()) ;

}

printf ("Please input a initial value (>= 0, enter 'q' to quit.):") ;

}

return 0 ;

}

int eatEnter (void)

{

if ('q' == getchar ())

return TRUE ;

else

return FALSE ;

}

void initialize (unsigned long int initial_value)

{

Seed = initial_value ;

}

double random (void)

{

unsigned long int temp_seed ;

temp_seed = A * (Seed % Q) - R * (Seed / Q) ;

if (temp_seed >= 0)

Seed = temp_seed ;

else

Seed = temp_seed + M ;

return (double) Seed / M ;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值