ivaneeo's blog

          自由的力量,自由的生活。

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks
          直接的方法是
              rand() % N      /* 不好 */
          試圖返回從?0?到?N - 1?的數字。但這個方法不好, 因為許多隨機數 發生器的低位比特并隨機, 參見問題?13.16。 一個較好的方法是:
              (int)((double)rand() / ((double)RAND_MAX + 1) * N)
          如果你不希望使用浮點, 另一個方法是:
              rand() / (RAND_MAX / N + 1)
          兩種方法都需要知道?RAND_MAX, 而且假設?N?要遠遠小于?RAND_MAX。 ?RAND_MAX?在?ANSI?里?#define?在?<stdlib.h>。

          順便提一下, RAND_MAX?是個常數, 它告訴你?C?庫函數?rand()? 的固定范圍。你不可以設?RAND_MAX?為其它的值, 也沒有辦法要求?rand()? 返回其它范圍的值。

          如果你用的隨機數發生器返回的是?0?到?1?的浮點值, 要取得范圍在?0?到 ?N - 1?內的整數, 只要將隨機數乘以?N?就可以了。

          posted on 2006-10-09 14:26 ivaneeo 閱讀(724) 評論(0)  編輯  收藏 所屬分類: C-自由的靈魂
          主站蜘蛛池模板: 开化县| 神农架林区| 长春市| 天等县| 增城市| 淮北市| 蒲江县| 台东市| 博爱县| 郯城县| 夏河县| 商洛市| 时尚| 嘉义县| 沧源| 噶尔县| 阳江市| 珲春市| 龙井市| 蓝田县| 新龙县| 凤凰县| 崇阳县| 关岭| 永寿县| 定襄县| 普宁市| 新河县| 堆龙德庆县| 广安市| 通化市| 安乡县| 陵水| 武义县| 红安县| 湘潭县| 建始县| 分宜县| 合肥市| 襄垣县| 邯郸县|