以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  随机数问题  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=191028)

--  作者:lin98
--  发布时间:2024/3/22 12:52:00
--  随机数问题
需求:将已数据,生成记录,星期六,星期天不生成数据,生成随机数=总数?
也就是如何实现将表A生成表B?

表A
编号     总数    系数    开始日期      
D01    1000    3      2024-3-11    
D02    2000    2      2024-3-15    
注:2024-3-16,2024-3-17是星期六,星期天,不生数据


需求结果显示:
表B
编号     总数    系数    开始日期      随机数
D01    1000    3      2024-3-11    330
D01    1000    3      2024-3-12    337
D01    1000    3      2024-3-13    333
D02    2000    2      2024-3-15    1020
D02    2000    2      2024-3-18    980


[此贴子已经被作者于2024/3/22 12:58:59编辑过]

--  作者:cd_tdh
--  发布时间:2024/3/22 13:23:00
--  
如果是3个数生成随机数,排除0和500,那么有两个随机数是1-499,剩余的随机数就用总数减去前面连个随机数
Dim Val1 As Integer = Rand.Next(1, 499) \'生成1到499之间的随机整数
Dim Val2 As Integer = Rand.Next(1, 499) \'生成1到499之间的随机整数
Dim Val3 As Integer = 100 - Val1 - Val2 

Output.show(Val1)
Output.show(Val2)
Output.show(Val3)
[此贴子已经被作者于2024/3/22 13:24:01编辑过]

--  作者:lin98
--  发布时间:2024/3/22 13:35:00
--  
可能我表达不清
表B是根据表A的数据生成,

需求:如何将“A的数据,星期六,星期天,不生数据,生成表B的数据?

--  作者:有点蓝
--  发布时间:2024/3/22 13:44:00
--  
dim nr as row
for each r as row in tables("a").rows
dim xs as integer = r("系数")
dim d as date = r("开始日期")
dim zs as integer = r("总数")
do while xs > 0
nr = tables("b").addnew
if d.DayOfWeek=6 then d = d.adddays(2)
if d.DayOfWeek=0 then d = d.adddays(1)
nr("编号")=r("编号")
nr("开始日期")=d
if xs = 1
nr("随机数") = zs
else
nr("随机数")=Rand.Next(1, zs)
zs = zs - nr("随机数") 
end if
loop
[此贴子已经被作者于2024/3/22 14:21:43编辑过]

--  作者:cd_tdh
--  发布时间:2024/3/22 14:10:00
--  
zs = zs - nr("随机数") 
end if
Loop
next
我测试结果不对

--  作者:lin98
--  发布时间:2024/3/22 15:12:00
--  
.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2022.8.18.1
错误所在事件:窗口,生成随机数,Button1,Click
详细错误信息:
“minValue”不能大于 maxValue。
参数名: minValue

--  作者:有点蓝
--  发布时间:2024/3/22 15:33:00
--  
……
zs = zs - nr("随机数") 
end if
xs = xs - 1
loop