none
有關亂數random RRS feed

  • 問題

  • 各位大大你們好

    我想請問一下

    我有一個問題是有關亂數

    這個內容是


    紅包金額    數量   編號
    1000        600    1~600                        3%
    600         1000   601~1600                  5%
    300         2400   1601~4000              12%
    200         3000   4001~7000              15%
    100         13000  7001~20000           65%

    然而我是一開始就把值寫死

    Dim s As New Random
            TextBox1.Text = s.Next(1, 600)
            TextBox2.Text = s.Next(601, 1600)
            TextBox3.Text = s.Next(1601, 4000)
            TextBox4.Text = s.Next(4001, 7000)
            TextBox5.Text = s.Next(7001, 13000)

    但是我該如何去了解機率問題

    因為我對這一塊不是很瞭解 所以希望各位大大不吝教導

    非常謝謝各位大大

    2012年1月11日 上午 01:46

解答

所有回覆

  • 各位大大你們好

    我想請問一下

    我有一個問題是有關亂數

    這個內容是


    紅包金額    數量   編號
    1000        600    1~600                        3%
    600         1000   601~1600                  5%
    300         2400   1601~4000              12%
    200         3000   4001~7000              15%
    100         13000  7001~20000           65%

    然而我是一開始就把值寫死

    Dim s As New Random
            TextBox1.Text = s.Next(1, 600)
            TextBox2.Text = s.Next(601, 1600)
            TextBox3.Text = s.Next(1601, 4000)
            TextBox4.Text = s.Next(4001, 7000)
            TextBox5.Text = s.Next(7001, 13000)

    但是我該如何去了解機率問題

    因為我對這一塊不是很瞭解 所以希望各位大大不吝教導

    非常謝謝各位大大

    我希望各位大大教我的是 如何去做動態分布
    2012年1月11日 上午 01:57
  • 發紅包,^_^。

    Random 每次都會產生不一樣的亂數,就你下的條件s.Next(1, 600)可能會重覆

    你應該寫段副程式,去記錄產生過的數值,例如 1,3,5,7,9 已經產生過了,

    產生過的,就再重新產生一組,

    直到每一條件的全部數值(1~600, 601~1600, ...)都用完為止。


    blog.kkbruce.net
    Plurk
    Google+專頁

    春有百花秋有月,
    夏有涼風冬有雪,
    若無閒事在心頭,
    便是人間好時節。
    2012年1月11日 上午 02:21
  • 您可以參考這個範例的做法:Non-Repeating Random Numbers

    • 已標示為解答 風過留痕 2012年1月17日 上午 10:28
    2012年1月11日 上午 06:05
  • 簡單的邏輯:

    1. 產生號碼牌陣列。0 ~ 19999 (2000 - 1)

    2. 亂數抽獎。從值域中產生隨機號碼,例如 1 號。

    3. 交換中獎索引值與值域最大索引值的內容,例如 Swap arrValues(1), arrValues(19999)

    4. 值域減 1 ,重複步驟 2 ,直到不抽獎為止。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2012年1月11日 下午 01:24
  • 這個問題本身就有問題。

    照發問人原先的做法, 面額不同的紅包總共發了五份給五個組別的其中之一, 機率分別是 1/600, 1/1000, 1/2400, 1/3000 與1/13000; 這樣的話, 面額愈小的中獎機率反而愈低。

    在這個問題並未重新清楚說明的情況下, 若光從字面上解讀這個問題, 依我的理解, 似乎是「紅包有不同面額, 依面額大小而有不同的數量」。或許發問人可以釐清的是, 到底有幾包紅包?

    假設總共有100個紅包好了。要發給20000個人, 那麼這個問題就會變得非常簡單 - 1000元面額會有三包, 600元5包, 300元12包, 依此類推。在1到20000的編號中, 先用亂數取出三個編號, 拿走1000元紅包, 接著取出五個編號拿走600元, 依此類推。這些編號都不能重複。

     



    • 已編輯 Johnny.Net 2012年1月12日 上午 05:10 typo
    2012年1月12日 上午 05:09
  • 大大你們好

    我寫了一支function

    int_BG_ID為代號 可以隨便填入 我填201

    int_BuyGold為金額 我填入1000

     

     Private Sub Play(ByVal int_RndNo As Integer, ByVal int_WinNo As Integer, ByVal int_BG_ID As Integer, ByVal int_BuyGold As Integer)
            '先以亂數抽取金額
            Dim int_rnd As Integer = Int((int_RndNo * Rnd()) + 1)
            If int_rnd = int_WinNo Then
              
                Dim str_SID As String = clCookie.GetValue(clConfigServer.CooikeTkecM, "SID")
                Dim str_MEMBERID As String = clCookie.GetValue(clConfigServer.CooikeTkecM, "ID")
                           Dim strMessage As String = clBuyGold.SetMemberAddBuyGold(int_BG_ID, Integer.Parse(str_MEMBERID), "n", int_BuyGold)
                clTools.MessageBox_JqFun(strMessage)
                Label1.Text = strMessage.ToString()
           
            End If

        End Sub

    我在button的click裡寫了一個

    '機率
     Play(201, 50, 1, 1000)

    這代表說 201這個活動代號 能取得到的金額機率為20% 這代表中獎

    不過 我要如何讓顯示機率 為20%

    麻煩請各位大大不吝教導

    非常謝謝各位大大


    Johnny.Net大大是否也可以教一下作法
    2012年1月15日 上午 07:57
  • 讓我再確認一次你的問題。如果我沒有意會錯誤的話, 你只是想要知道如何決定某一百分比的機率是否發生。如果你決定的機率是百分之20, 那麼觸發100次有20次左右會成功, 其餘失敗。是這樣沒錯吧?

    Dim shot As Integer = CInt(Int((100 * Rnd()) + 1))

    以上這行程式可以取出 1 到 100 的隨機整數。現在假設你給了一個變數代表你的機率值如下:

    Dim chance As Integer = 20

    現在在你的程式中加上上述兩行。每執行一次, 如果 shot <= chance 就代表成功, Else 代表失敗

    這樣有解決你的問題嗎?

     


    2012年1月15日 下午 01:05
  • 各位大大你們好

    非常謝謝各位大大的幫忙

    我解出來了

    我用一個中獎機率

    和一個出現金額的機率去做for迴圈

    而呈現中獎金額

    非常謝謝各位大大提供的資訊

    2012年1月17日 上午 10:27