zoukankan      html  css  js  c++  java
  • 真正随机数的产生

            今天小明和小红玩游戏,决定如果谁要是输了就要受到惩罚。可是怎么惩罚呢,惩罚的方式小明找了找,找到了这么几条:

    1,自己主动激情舌吻10s以上

    2,上下对卧,自己做10个俯卧撑

    3,脱内衣一件

    4,给对方按摩5分钟

    5,今天所有的衣服归你洗

    6,对视,将对方手捧在脸旁,说五次:我爱你,我要嫁给你.

    实行哪一条呢? 问题出来了。这个时候小明用有道词典翻译了上面的句子,写出了一个程序用来决定用哪个惩罚。

                        程序目的:产生随机数 1-6

                        执行方法:L 开始     G 结束运行,显示执行结果。

     1 #include  "stdio.h"
     2 #include "stdlib.h"
     3 #include "conio.h" 
     4 
    5 6 #define TOTAL 6 7 8 #define TURE 1 9 #define FAULT 0 10 11 int main () 12 { 13 char *rules [6] = {"1 : initiative, tongue kiss more than 10s passionately.", 14 "2 : To lie, at the top, to do 10 pushups.", 15 "3 : To lie on both sides, in upper part, to do 10 pushups.", 16 "4 : Take off a piece of underwear.", 17 "5 : You have to wash all of the clothes.", 18 "6 : In the eye, take each other next to hand on the face, said five times: I love you, I want to marry you." 19 }; 20 21 char in_number ; 22 char in_key; 23 int i,j; 24 25 printf ("please enter 'L' to start the lover game : "); 26 scanf("%c" , &in_number); 27 while (in_number!='L') 28 { 29 printf (" input error ! "); 30 printf ("please input 'L' to start the game "); 31 fflush(stdin); 32 scanf("%c" , &in_number); 33 } 34 35 printf ("please input 'G' to end "); 36 while (in_key != 'G') 37 { 38 i = (int)rand(); 39 i = i % (TOTAL); 40 scanf("%c" , &in_key); 41 if(in_key == 'G') 42 { 43 printf (" Accept the punishment! ! ! "); 44 printf ("THE NUMBER IS %d ",(i+1)); 45 printf ("%s ", *(rules + i)); 46 } 47 } 48 system ("pause"); 49 }

            聪明的小红发现每次如果正确输入L G 输出的结果一直都是 6 。这个时候小红就抗议了,说小明的程序有问题,这六个数字不是随机的。是小明事先安排好的。小明有理说不清啊,只能继续研究。后来查阅到。C语言中 rand()随机函数是伪随机。不是真正的随机。
            既然是伪随机,那就要和自己的GF解释清楚啊,解释清楚了还要解决。于是在 37  38 行之间加上语句  :

              srand((unsigned)time(NULL));  

              头文件   #include <time.h>

              作用就是

              首先给srand()提供一个种子,它是一个unsigned int类型,其取值范围从0~65535

              然后调用rand(),它会根据提供给srand()的种子值返回一个随机数(在0到32767之间)

              根据需要多次调用rand(),从而不间断地得到新的随机数;

              无论什么时候,都可以给srand()提供一个新的种子,从而进一步“随机化”rand()的输出结果

     最终结果:

     1 //date : 13/11/25 
     2 //designer :pengxiaoen
     3 // function : lover game 
     4 
     5 #include  "stdio.h"
     6 #include "stdlib.h"
     7 #include "conio.h" 
     8 #include <time.h>
     9 
    10 #define TOTAL   6UL
    11 #define  TURE   1
    12 #define  FAULT  0
    13 
    14 int main ()
    15 {
    16   char *rules [6] = {"1 : initiative,  tongue kiss more than 10s passionately.",
    17                      "2 : To lie, at the top, to do 10 pushups.",
    18                      "3 : To lie on both sides, in upper part, to do 10 pushups.",
    19                      "4 : Take off a piece of underwear.",
    20                      "5 : You have to wash all of the clothes.",
    21                      "6 : In the eye, take each other next to hand on the face, said five times: I love you, I want to marry you."
    22                      };                     
    23   char in_number ;
    24   char in_key;
    25   int  i,j;
    26 
    27   printf ("please enter 'L' to start the lover game : ");
    28   scanf("%c" , &in_number);
    29   while (in_number!='L')
    30   { 
    31     printf (" input error  !
     ");
    32     printf ("please input 'L' to start the game ");
    33     fflush(stdin);
    34     scanf("%c" , &in_number);
    35   }
    36   
    37   printf ("please input 'G' to end : ");
    38   while (in_key != 'G')
    39   {
    40     srand((unsigned)time(NULL));   
    41     i = (int)rand();
    42     i = i % (TOTAL);
    43     scanf("%c" , &in_key);
    44     if(in_key == 'G')
    45      {
    46         printf ("
    
    
    
    
            Accept the punishment! ! ! 
    ");
    47         printf (" THE NUMBER IS   %d
     ",(i+1));
    48         printf (" %s
    
    
    
    
    ", *(rules + i));
    49      }
    50   }
    51   system ("pause");
    52 } 

    OK 搞定,给了时间种子,随机数每次执行都不一样了。基本上实现了随机性。

     总结:泡妞也要用头脑

  • 相关阅读:
    Nginx专题(二)-----虚拟主机、location规则、rewrite、负载均衡配置
    Nginx专题(一)-----简介
    springMVC自动转义问题
    Tomcat专题(三)-----Tomcat性能优化
    Tomcat专题(二)-----Tomcat源码、嵌入式Tomcat
    Tomcat专题(一)-----架构体系
    jvm性能调优(五)-----深入了解性能优化
    jvm性能调优(四)-----编写高效的java代码
    jvm性能调优(三)-----JVM的执行子系统
    jvm性能调优(二)-----垃圾回收、内存分配
  • 原文地址:https://www.cnblogs.com/sepeng/p/3444120.html
Copyright © 2011-2022 走看看