一切bug都不是你的錯,只因為你對它的無視而表示的不滿

          追求java的極限,語言,工具,框架,系統。

           

          JAVA產生隨機數總結

          最近用到隨機數,但是一直都沒搞多清楚。剛好用到就總結一下。(主要是來源API以及網上)
          主要關注兩方面:
                  如何產生一個隨機數;
                  如何控制產生的隨機數范圍,還包括正負,類型;

          JAVA能實現隨機數的方法主要有:
          第一種:使用java.lang.math類中的Math.random()方法;
                     API說明是:返回帶正號的 double 值,該值大于等于 0.0 且小于 1.0
                                     返回值是一個偽隨機選擇的數,在該范圍內(近似)均勻分布。
          使用:這個方法主要用來返回一個正整數,例:int a = (int) (Math.random() * 1000) ;
                  即可返回一個0~1000內的所有正整數,不過不知道包不包括0和1000,想也應該是包括地!當然你可以換成100。
          很多時候我們用到隨機數主要是出于某個對象或其他事件有多種可能的狀態。通過產生隨機數,
          隨機地實現某一狀態,改變顯示結果或是使程序進入某一分支中。
          例如俄羅斯方塊中,方塊有七種類型,同時每一個方塊又有四種狀態。可以用這樣的方式 來隨機產生下落的
          方塊:
                 int  blockType = (int) (Math.random() * 1000) % 7;
                 int  turnState = (int) (Math.random() * 1000) % 4;

          第二種:使用java.util.Random類的Random對象。當然他的功能就強大多了,不僅僅可以產生隨機整數,浮點數,長整型,布爾數都可以。
                     只要調用相應的方法即可。
          使用:java.util.Random r = new  java.util.Random();
                   Tpye x = r.nextTpye();//這里用了描述語言,具體用那個自己選;
          產生的隨機數真不知道是那個。可以肯定上面代碼如果是整型,那一般是很大的數,同時有正有負。
          如何生成某個范圍的隨機數?比如像上面,0~1000之間的隨機數?
          一般的方法是:取正取模
                  Random r = new Random(); 
                  int a = (r.nextInt()>>>1)%100;
          但會出現值偏小的情況。
          所以,JDK升級的版本的用法就為nextInt(100)產生0-100之間的隨機數,更方便。
          API:public int nextInt(int n)
                 返回一個偽隨機數,它是取自此隨機數生成器序列的、在 0(包括)和指定值(不包括)之間均勻分布的 int 值。
          其他類型的也一樣。
          還可以簡單地用如:
          Random r = new Random(); 

          int i = r.randomInt(10);//輸入一個0到9 的隨機數;
          就先寫到這里,有機會再加吧!




          posted on 2012-03-04 18:10 gaochang 閱讀(1737) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          導航

          統計

          常用鏈接

          留言簿

          隨筆檔案

          文章檔案

          相冊

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 沅陵县| 尚义县| 佛冈县| 亳州市| 达拉特旗| 康乐县| 凯里市| 秀山| 宁海县| 得荣县| 丹寨县| 耿马| 兴化市| 新化县| 江西省| 庆元县| 兴山县| 怀集县| 汤阴县| 囊谦县| 凌云县| 平邑县| 长子县| 峨边| 来凤县| 五常市| 财经| 千阳县| 上高县| 确山县| 西青区| 慈利县| 塘沽区| 邵武市| 黄大仙区| 永泰县| 疏勒县| 壶关县| 务川| 涿州市| 大兴区|