不同列表随机
Different lists Random
首先,我生成随机数(假设有 1000 个元素),如何知道总和小于或大于 500 的第一个元素有多少?
其次,我将生成 4 个随机数列表。分布在每个列表中的每个数字都没有重复,如果所有列表的和都出现固定值,则停止随机生成。
示例:1-4 个列表; (1,2,3,4,5), (6,7,8,9,10), (11,12,13,14,15), (16,17,18,19,20);
4 个列表的总和是 210.
我如何 运行 像 "Give me 4 lists random numbers, no repetiton, if the sum = 210 stop random." 这样的命令?
谢谢您的回答
这报告 rand
的第一个元素的数量超过 500。
rand = RandomInteger[10, 1000];
Catch[total = 0;
Map[If[(total += First[#]) > 500, Throw[#[[2, 1]]]] &,
MapIndexed[List, rand]]]
103
第二个问题
"Every number distributed in each lists has no repetition."
RandomSample
对此很有用。添加计数器n
,可省略
n = 0;
While[True,
n++;
total = Total@Flatten[lists = Table[RandomSample[Range[50], 5], 4]];
If[total < 500, Break[]]]
lists
Row[{n, " loops"}]
{{36, 30, 25, 9, 10}, {36, 22, 44, 13, 2}, {9, 24, 34, 7, 47}, {5, 28, 15, 36, 22}}
4 loops
36 出现在 2 个列表中,但每个列表本身都没有重复。
首先,我生成随机数(假设有 1000 个元素),如何知道总和小于或大于 500 的第一个元素有多少?
其次,我将生成 4 个随机数列表。分布在每个列表中的每个数字都没有重复,如果所有列表的和都出现固定值,则停止随机生成。 示例:1-4 个列表; (1,2,3,4,5), (6,7,8,9,10), (11,12,13,14,15), (16,17,18,19,20); 4 个列表的总和是 210.
我如何 运行 像 "Give me 4 lists random numbers, no repetiton, if the sum = 210 stop random." 这样的命令?
谢谢您的回答
这报告 rand
的第一个元素的数量超过 500。
rand = RandomInteger[10, 1000];
Catch[total = 0;
Map[If[(total += First[#]) > 500, Throw[#[[2, 1]]]] &,
MapIndexed[List, rand]]]
103
第二个问题
"Every number distributed in each lists has no repetition."
RandomSample
对此很有用。添加计数器n
,可省略
n = 0;
While[True,
n++;
total = Total@Flatten[lists = Table[RandomSample[Range[50], 5], 4]];
If[total < 500, Break[]]]
lists
Row[{n, " loops"}]
{{36, 30, 25, 9, 10}, {36, 22, 44, 13, 2}, {9, 24, 34, 7, 47}, {5, 28, 15, 36, 22}}
4 loops
36 出现在 2 个列表中,但每个列表本身都没有重复。