n , m,
. Perl, Java , .
use strict;
use warnings;
use feature qw( say );
use List::Util qw( shuffle );
my $m = 250;
my $n = 9;
my @nums;
while ($n--) {
my $x = int(rand($m-$n))+1;
push @nums, $x;
$m -= $x;
}
say join ', ', shuffle @nums;
, . :
- 1, 1, 1, 1, 2, 3, 6, 50, 185
- 1, 1, 1, 1, 2, 3, 4, 13, 224
- 1, 1, 1, 1, 1, 3, 8, 11, 223
- 1, 1, 1, 1, 2, 4, 19, 103, 118
- 2, 2, 9, 11, 11, 19, 19, 68, 109
N , , M. :
use strict;
use warnings;
use feature qw( say );
use List::Util qw( sum );
my $m = 250;
my $n = 9;
my @nums;
for (1..$n) {
push @nums, rand();
}
my $factor = ($m-$n) / sum(@nums);
for my $i (0..$#nums) {
$nums[$i] = int($nums[$i] * $factor) + 1;
}
my $fudge = $m - sum(@nums);
for (1..$fudge) {
++$nums[rand(@nums)];
}
say join('+', @nums), '=', sum(@nums);
:
32+32+23+42+29+32+29+20+11=250
31+18+25+16+11+41+37+56+15=250
21+15+40+46+22+40+32+1+33=250
34+24+18+29+45+30+19+29+22=250
3+45+20+6+3+25+18+65+65=250