以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  简单功能求助  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=193958)

--  作者:dknt
--  发布时间:2024/10/28 16:44:00
--  简单功能求助
目的:随机生成N个小数,所有小数和等于1
功能很简单,但是过程很艰难,望大神赐教!!

--  作者:有点蓝
--  发布时间:2024/10/28 17:00:00
--  
Dim sum As Decimal = 1
Dim lst As New List (Of Decimal)
Dim n As Integer = 10
For i As Integer = 1 To n - 1
    Dim d As Decimal = Rand.NextDouble()
\'    Output.Show(d)
    Do While sum <= d
        d = d / 10
    Loop 
    lst.Add (d)
    sum = sum - d
Next
lst.Add (sum)
Output.Show (String.Join (vbcrlf, lst.ToArray))

--  作者:dknt
--  发布时间:2024/10/28 17:37:00
--  
牛逼!!感谢!!!
--  作者:dknt
--  发布时间:2024/10/28 17:50:00
--  
大神,有个问题,能排除随机为0的数吗,就是所有随机小数不能出现为0的情况
--  作者:有点蓝
--  发布时间:2024/10/28 19:46:00
--  
判断一下,如果是0就重新取一个
--  作者:dknt
--  发布时间:2024/10/29 10:29:00
--  
Dim sum As Decimal = 1
Dim lst As New List (Of Decimal)
Dim n As Integer = 10
For i As Integer = 1 To n - 1
    Dim d As Decimal = Rand.NextDouble()
    Do While sum <= d
    if d > 0.1 and d < 0.4 then
        d = d / 10
    Loop 
   end if
    lst.Add (d)
    sum = sum - d
Next
lst.Add (sum)
Output.Show (String.Join (vbcrlf, lst.ToArray))
大神,这代码加上条件后就直接死机了,求助啊

--  作者:有点蓝
--  发布时间:2024/10/29 10:32:00
--  
Dim sum As Decimal = 1
Dim lst As New List (Of Decimal)
Dim n As Integer = 10
For i As Integer = 1 To n - 1
    Dim d As Decimal = Rand.Next(1000000, 3000000) / 1000000
\'    Output.Show(d)
    Do While sum <= d
        d = d / 10
    Loop 
    lst.Add (d)
    sum = sum - d
Next
lst.Add (sum)
Output.Show (String.Join (vbcrlf, lst.ToArray))

--  作者:dknt
--  发布时间:2024/10/29 11:00:00
--  
大神,这个代码写进按钮控件Click事件中报错啊
图片点击可在新窗口打开查看此主题相关图片如下:df15541e6e06403f6abaef2d1fbfa9b.png
图片点击可在新窗口打开查看

--  作者:有点蓝
--  发布时间:2024/10/29 11:04:00
--  
根据错误提示,认真看7楼代码
--  作者:dknt
--  发布时间:2024/10/29 11:15:00
--  
谢谢版主!