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-自由的靈魂
          主站蜘蛛池模板: 双城市| 三台县| 泽州县| 云安县| 建德市| 灵台县| 丹江口市| 日喀则市| 武强县| 高邮市| 遂平县| 怀安县| 阿拉善盟| 惠东县| 齐河县| 莱芜市| 绥芬河市| 冷水江市| 镇平县| 珠海市| 法库县| 根河市| 藁城市| 綦江县| 宁远县| 镇赉县| 延安市| 新丰县| 尚义县| 龙川县| 额济纳旗| 垫江县| 娱乐| 巴东县| 顺平县| 开原市| 丰城市| 鹤山市| 城口县| 华容县| 大足县|