test.c

来自「linux下的ssl客户端和服务器端源码」· C语言 代码 · 共 87 行

C
87
字号
#define RANDOM_MAX 0x7FFFFFFFstatic long my_do_rand(unsigned long *value){/*      这个算法保证所产生的值不会超过(2^31 - 1)这里(2^31 - 1)就是 0x7FFFFFFF。而 0x7FFFFFFF      等于127773 * (7^5) + 2836,7^5 = 16807。      整个算法是通过:t = (7^5 * t) mod (2^31 - 1)      这个公式来计算随机值,并且把这次得到的值,作为下次计算的随机种子值。   */   long quotient, remainder, t;    quotient = *value / 127773L;   remainder = *value % 127773L;   t = 16807L * remainder - 2836L * quotient;    if (t <= 0)      t += 0x7FFFFFFFL;  return ((*value = t) % ((unsigned long)RANDOM_MAX + 1));}static unsigned long next = 1;int my_rand(void){   return my_do_rand(&next);}void my_srand(unsigned int seed){   next = seed;}#include <time.h>int main(){   int i;     my_srand((unsigned)(time(NULL)));   for(i=0;i<100;i++)   {      if(i % 10 == 0)         printf("\n");      printf("%d\t",my_rand());   }   return 0;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?