• 用01随机函数构造[a,b]整数范围随机数


     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 #define RAND_0_1 (rand()&0x1)
     4 
     5 int random(int a, int b);
     6 
     7 int main(){
     8     int s[100];
     9     
    10     for (int i=0; i<100; i++) {
    11         s[i] = 0;
    12     }
    13     
    14     for (int i=0; i<1000000; i++) {
    15         s[random(0, 99)]++;
    16     }
    17     
    18     for (int i=0; i<100; i++) printf("%d
    ", s[i]);
    19     
    20     system("pause");
    21     return 0;
    22 }
    23 
    24 int random(int a, int b) {
    25     int d, D = b - a;
    26     int ret = 0;
    27     do {
    28         ret = 0;
    29         d = b - a;
    30         while (d) {
    31             ret = ret<<1;
    32             ret |= RAND_0_1;
    33             d = d>>1;
    34         }
    35     } while(ret > D);
    36     return ret + a;
    37 }

    算法导论(第二版)里第五章有关于用1/0随机函数产生[a, b]内的随机数,不知这样实现是否正确,运行结果不理想

  • 相关阅读:
    KafKa 发消息到Storm
    HBase的优化
    HBase部署与使用
    Scala 类
    Scala高阶函数
    模式匹配
    Scala数据结构
    scala基础语法
    Scala安装配置
    Kafka工作流程分析
  • 原文地址:https://www.cnblogs.com/lailailai/p/3570307.html
Copyright © 2020-2023  润新知