SOGO論壇
  登入   註冊   找回密碼
查看: 1188|回覆: 1
列印 上一主題 下一主題

[程式設計] 拜託幫忙,我不會 [複製連結]

Rank: 3Rank: 3

狀態︰ 離線
跳轉到指定樓層
1
發表於 2009-5-6 12:13:21 |只看該作者 |倒序瀏覽
請寫一個java程式設計.模擬大樂透開獎,由1~49個號碼中開出六個合一個特別號作為頭獎.然後在模擬民眾買樂透,
假設每次買100元兩張,每星期買兩次,試試看大慨要多少年才會中一次頭獎
喜歡嗎?分享這篇文章給親朋好友︰
               感謝作者     

論壇顧問

Q^心靈導師^Q

Rank: 14Rank: 14Rank: 14Rank: 14

顧問勳章 原創及親傳圖影片高手勳章 布布達人勳章

狀態︰ 離線
2
發表於 2009-5-9 12:15:51 |只看該作者
原帖由 cps 於 2009-5-6 12:13 發表
請寫一個java程式設計.模擬大樂透開獎,由1~49個號碼中開出六個合一個特別號作為頭獎.然後在模擬民眾買樂透,
假設每次買100元兩張,每星期買兩次,試試看大慨要多少年才會中一次頭獎 ...


以下是從網路上找到的,你參考一下吧!

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" fontSize="14">

        <mx:Script>
                <![CDATA[
                        import mx.collections.ArrayCollection;
                        /*
                        題目敘述:
                        請使用 MATH 或 RANDOM 類別所提供的亂數函數及陣列來設計一模擬樂透彩開獎的程式
                        程式執行後會產生 6 個號碼以及 1 個特別號

                        1.每次執行程式皆會亂數產生 6 個號碼及 1 個特別號
                        2.號碼之間不可重複出現
                        3.所有號碼介於 01 ~ 42 之間
                        4.個位數號碼顯示時請漁號碼前加入 "0" 例如 7 要顯示 07

                        評分項目
                        每次執行程式皆會亂數產生 6 個號碼及 1 個特別號 - 4
                        號碼之間不可重複出現 - 4
                        所有號碼介於 01 ~ 42 之間 - 4
                        個位數號碼顯示時請於號碼前加入 "0" 如 7 要顯示 07 - 3

                        總分 15

                        Author: 山羊
                        URL: <a onclick="pageTracker._trackPageview ('/outgoing/http_gjo4rul4_blogspot_com');" href="http://gjo4rul4.這個網址已被系統封鎖" target="_blank">http://gjo4rul4.這個網址已被系統封鎖</a>

                        by Author :

                        這個實作的程式 我寫了兩個方法
                        通常一般寫程式的初學者應該會用方法2
                        先取出亂數並且判斷陣列中是否重複
                        雖然這個範例中差異並不會很大
                        但是如果在 1000 個亂數中要取出 800 個 (或更大的數字)
                        兩者的效能就會以方法一較有效率

                        方法1 -> 1000次寫入陣列 800次產生亂數
                        方法2 -> 800次寫入陣列 800次(以上)產生亂數


                        */

                        //方法1
                        private function clickHandler1():void{
                                //清空印出區域
                                this.printOutArea.text = "";
                                //建立集合物件
                                var arc:ArrayCollection = new ArrayCollection();
                                //執行 42 次的迴圈  >> 將 42 個數字依序塞入集合物件
                                for(var i:int=1;i<=42;i++){
                                        //如果 數字 小於 10 的話必須在 數字前面加上 0
                                        if(i<10){
                                                //將數字 "塞入" 集合物件
                                                arc.addItem("0"+i);
                                        }else{
                                                //將數字 "塞入" 集合物件
                                                arc.addItem(i);
                                        }
                                }
                                //用亂數取出 6 個號碼
                                //執行 6 次迴圈
                                for(var j:int=0;j<6;j++){
                                        //先取出 亂數*集合物件的長度
                                        var number:int = Math.floor(Math.random()*arc.length);
                                        //將集合物件的第 x 個物件取出並印在打印區  x 代表剛剛取出的亂數 ( 但不會超過集合物件的長度 )
                                        this.printOutArea.text = this.printOutArea.text + "第 " + (j+1) + " 個號碼 : "+ arc.getItemAt(number) + "\n";
                                        //將抽到的號碼從集合物件移除
                                        arc.removeItemAt(number);
                                }
                                //再抽出最後一個號碼 為特別號 , 這個就不用再移除物件了 因為已經結束了
                                this.printOutArea.text = this.printOutArea.text + "特別號 : "+ arc.getItemAt(Math.floor(Math.random()*arc.length)) + "\n";

                        }
                        //方法2
                        private function clickHandler2():void{
                                //清空印出區域
                                this.printOutArea.text = "";
                                //建立陣列
                                var array:Array = new Array();
                                //陣列必須要有 7 個數字才停止運算
                                while(array.length < 7){
                                        //建立亂數 1~42 中取 1
                                        var number:int = Math.floor(Math.random()*42)+1;
                                        //數字是否重覆旗標
                                        var hasNumber:Boolean = false;
                                        //逐次比對陣列內所有的數字
                                        for(var i:int=0;i<array.length;i++){
                                                //如果發現陣列已經有得到的亂數就把重複旗標設定為 true
                                                if(number == array){
                                                        hasNumber = true;
                                                }
                                        }
                                        //如果沒有發現重複的數值 塞入亂數
                                        if(!hasNumber){
                                                array.push(number);
                                        }

                                }
                                //取出依序取出前六個號碼
                                for(var j:int=1;j<=6;j++){
                                        //如果小於 10 就在 數字前面 + 上 0
                                        if(array[j-1]<10){
                                                this.printOutArea.text = this.printOutArea.text + "第 " + j + " 個號碼 : "+ "0"+array[j-1] + "\n";
                                        }else{
                                                this.printOutArea.text = this.printOutArea.text + "第 " + j + " 個號碼 : "+ array[j-1] + "\n";
                                        }

                                }
                                //取出特別號
                                //如果小於 10 就在 數字前面 + 上 0
                                if(array[6]<10){
                                        this.printOutArea.text = this.printOutArea.text + "特別號 : "+ "0"+array[6] + "\n";
                                }else{
                                        this.printOutArea.text = this.printOutArea.text + "特別號 : "+ array[6] + "\n";
                                }

                        }

                ]]>
        </mx:Script>
        <!--建立三個 FLEX 物件-->
        <mx:Text text="JAVA 實力評量 JVD01 使用 FLEX 實作 &#xa;&#xa;模擬樂透彩 (易)&#xa;&#xa;程式執行號產生六個號碼以及一個特別號"/>
        <mx:TextArea width="800" height="400" id="printOutArea"/>
        <mx:Button label="執行 方法 1" click="clickHandler1()"/>
        <mx:Button label="執行 方法 2" click="clickHandler2()"/>
</mx:Application>
請注意︰利用多帳號發表自問自答的業配文置入性行銷廣告者,將直接禁訪或刪除帳號及全部文章!
您需要登錄後才可以回覆 登入 | 註冊


本論壇為非營利自由討論平台,所有個人言論不代表本站立場。文章內容如有涉及侵權,請通知管理人員,將立即刪除相關文章資料。侵權申訴或移除要求:abuse@oursogo.com

GMT+8, 2024-11-26 12:35

© 2004-2024 SOGO論壇 OURSOGO.COM
回頂部