Pseudorandom number generator image: Difference between revisions
Content added Content deleted
mNo edit summary |
(added Raku programming solution) |
||
Line 168: | Line 168: | ||
save("randombw.png", rand(Float16, 1000, 1000)) |
save("randombw.png", rand(Float16, 1000, 1000)) |
||
</lang> |
</lang> |
||
=={{header|Raku}}== |
|||
MoarVM [https://github.com/MoarVM/MoarVM/blob/master/3rdparty/tinymt/tinymt64.c uses Mersenne Twister] as its PRNG but a prime seeder is not mandatory. |
|||
<lang perl6># 20200818 Raku programming solution |
|||
use Image::PNG::Portable; |
|||
srand 2⁶³ - 25; # greatest prime smaller than 2⁶³ and the max my system can take |
|||
my @data = < 250 500 1000 1500 >; |
|||
@data.map: { |
|||
my $o = Image::PNG::Portable.new: :width($_), :height($_); |
|||
for ^$_ X ^$_ -> @pixel { # about 40% slower if split to ($x,$y) or (\x,\y) |
|||
$o.set: @pixel[0], @pixel[1], 255.rand.Int, 255.rand.Int, 255.rand.Int |
|||
} |
|||
$o.write: "image$_.png" or die; |
|||
}</lang> |
|||
{{out}} |
|||
<pre>file image*.png |
|||
image1000.png: PNG image data, 1000 x 1000, 8-bit/color RGBA, non-interlaced |
|||
image1500.png: PNG image data, 1500 x 1500, 8-bit/color RGBA, non-interlaced |
|||
image250.png: PNG image data, 250 x 250, 8-bit/color RGBA, non-interlaced |
|||
image500.png: PNG image data, 500 x 500, 8-bit/color RGBA, non-interlaced |
|||
</pre> |