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 閱讀(723) 評論(0)  編輯  收藏 所屬分類: C-自由的靈魂
          主站蜘蛛池模板: 左云县| 萨迦县| 乌兰县| 佛冈县| 平邑县| 台山市| 桓仁| 黄冈市| 海原县| 抚松县| 新龙县| 仁怀市| 泽州县| 镇沅| 桐乡市| 黄陵县| 常熟市| 静乐县| 启东市| 台南县| 延庆县| 蒲城县| 德兴市| 繁峙县| 普定县| 余江县| 和林格尔县| 右玉县| 西贡区| 东平县| 北辰区| 溧水县| 融水| 临湘市| 三江| 兴和县| 浮梁县| 晋宁县| 顺平县| 涟水县| 奉节县|