[PD] weighted random integers with arbran ?

David Powers cyborgk at gmail.com
Mon Aug 28 03:41:54 CEST 2006


Hi Tim,

Maybe this is what you need ... you give it a set of probabilities as
a list of floats - it will weight them for you, so you don't
necessarily need to keep them between 0 and 1. Then bang and it will
output a random choice based on the probability.

Send it a list [1 2 3 4 5( then [bang( ... your output will be between
0 to 4, with 0 least likely and 4 most likely. The output is meant to
be used as the index for an array or list element. Note that it
accepts lists of up to length 32.

Built using PD-extended, so it definitely requires Frank's list-abs ...

~David

On 8/23/06, tim vets <timvets at gmail.com> wrote:
> I want to make a weighted random generator.
>
>  More or less the way 'probalizer' works, but since I'm on windows that is
> not an option...
>  Arbran should do this, but I have a problem:
>  In the table for the values I enter 0 1 2 3 4 5 6 7 8 9 10 11
>  the probability table has 0 0 0 0 1 0 0 0 0 0 0 0 in it
>  the sizes and Y ranges are respectively 12 for both, 0 to 11 for the first
> table and 0 to 1 for the second.
>  after the outlet of arbran I put an [int] object.
>  now I expect to ALWAYS get the number 4, right?
>  It doesn't, sometimes it's 3...
>  what am I overlooking?
>
> (also see attachment, but the table's properties aren't saved so you have to
> set them again, maybe a ('save properties' alongside the 'save contents'
> button would be handy?)...)
>
>  Thank you!
>
>  Tim
>
>
> _______________________________________________
> PD-list at iem.at mailing list
> UNSUBSCRIBE and account-management ->
> http://lists.puredata.info/listinfo/pd-list
>
>
>
>
-------------- next part --------------
#N canvas 44 30 611 565 12;
#X obj 261 267 list-len;
#X obj 149 225 list-accum;
#N canvas 0 0 450 300 graph1 0;
#X array \$0-probArray 32 float 3;
#A 0 0.333333 0.333333 0.666667 0.666667 1 1 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;
#X coords 0 1 32 0 200 140 1;
#X restore 370 385 graph;
#X obj 125 372 tabset \$0-probArray;
#X obj 118 278 list-math /;
#X obj 17 35 inlet;
#X obj 13 482 outlet;
#X obj 261 485 outlet;
#X obj 17 106 route bang list;
#X obj 15 396 randomF 1;
#X text 4 5 [probability] : requires GEM zexy & list-abs;
#N canvas 847 275 408 324 checkProb 1;
#X obj 36 33 inlet;
#X obj 221 11 inlet;
#X obj 178 277 outlet;
#X obj 215 38 list split 16;
#N canvas 508 208 647 332 moses-junk 0;
#X obj 21 105 moses;
#X msg 20 139 0;
#X obj 68 105 moses;
#X obj 116 105 moses;
#X obj 163 105 moses;
#X obj 210 106 moses;
#X obj 257 106 moses;
#X obj 305 106 moses;
#X obj 352 106 moses;
#X msg 68 136 1;
#X msg 116 139 2;
#X msg 163 139 3;
#X msg 208 138 4;
#X msg 256 141 5;
#X msg 304 143 6;
#X msg 351 143 7;
#X obj 405 107 moses;
#X obj 452 107 moses;
#X obj 500 107 moses;
#X obj 547 107 moses;
#X obj 594 108 moses;
#X obj 641 108 moses;
#X obj 689 108 moses;
#X obj 736 108 moses;
#X msg 404 141 8;
#X msg 452 138 9;
#X msg 500 141 10;
#X msg 547 141 11;
#X msg 592 140 12;
#X msg 640 143 13;
#X msg 688 145 14;
#X msg 735 145 15;
#X obj 447 188 f;
#X obj 145 57 unpack 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;
#X obj 145 20 inlet;
#X obj 447 220 * 1;
#X obj 447 256 outlet;
#X obj 695 255 outlet;
#X obj 29 22 inlet;
#X connect 0 0 1 0;
#X connect 0 1 2 0;
#X connect 1 0 32 0;
#X connect 2 0 9 0;
#X connect 2 1 3 0;
#X connect 3 0 10 0;
#X connect 3 1 4 0;
#X connect 4 0 11 0;
#X connect 4 1 5 0;
#X connect 5 0 12 0;
#X connect 5 1 6 0;
#X connect 6 0 13 0;
#X connect 6 1 7 0;
#X connect 7 0 14 0;
#X connect 7 1 8 0;
#X connect 8 0 15 0;
#X connect 8 1 16 0;
#X connect 9 0 32 0;
#X connect 10 0 32 0;
#X connect 11 0 32 0;
#X connect 12 0 32 0;
#X connect 13 0 32 0;
#X connect 14 0 32 0;
#X connect 15 0 32 0;
#X connect 16 0 24 0;
#X connect 16 1 17 0;
#X connect 17 0 25 0;
#X connect 17 1 18 0;
#X connect 18 0 26 0;
#X connect 18 1 19 0;
#X connect 19 0 27 0;
#X connect 19 1 20 0;
#X connect 20 0 28 0;
#X connect 20 1 21 0;
#X connect 21 0 29 0;
#X connect 21 1 22 0;
#X connect 22 0 30 0;
#X connect 22 1 23 0;
#X connect 23 0 31 0;
#X connect 23 1 37 0;
#X connect 24 0 32 0;
#X connect 25 0 32 0;
#X connect 26 0 32 0;
#X connect 27 0 32 0;
#X connect 28 0 32 0;
#X connect 29 0 32 0;
#X connect 30 0 32 0;
#X connect 31 0 32 0;
#X connect 32 0 35 0;
#X connect 33 0 0 1;
#X connect 33 1 2 1;
#X connect 33 2 3 1;
#X connect 33 3 4 1;
#X connect 33 4 5 1;
#X connect 33 5 6 1;
#X connect 33 6 7 1;
#X connect 33 7 8 1;
#X connect 33 8 16 1;
#X connect 33 9 17 1;
#X connect 33 10 18 1;
#X connect 33 11 19 1;
#X connect 33 12 20 1;
#X connect 33 13 21 1;
#X connect 33 14 22 1;
#X connect 33 15 23 1;
#X connect 34 0 33 0;
#X connect 35 0 36 0;
#X connect 38 0 0 0;
#X restore 136 160 pd moses-junk;
#N canvas 508 208 631 316 moses-junk 0;
#X obj 21 105 moses;
#X msg 20 139 0;
#X obj 68 105 moses;
#X obj 116 105 moses;
#X obj 163 105 moses;
#X obj 210 106 moses;
#X obj 257 106 moses;
#X obj 305 106 moses;
#X obj 352 106 moses;
#X msg 68 136 1;
#X msg 116 139 2;
#X msg 163 139 3;
#X msg 208 138 4;
#X msg 256 141 5;
#X msg 304 143 6;
#X msg 351 143 7;
#X obj 405 107 moses;
#X obj 452 107 moses;
#X obj 500 107 moses;
#X obj 547 107 moses;
#X obj 594 108 moses;
#X obj 641 108 moses;
#X obj 689 108 moses;
#X obj 736 108 moses;
#X msg 404 141 8;
#X msg 452 138 9;
#X msg 500 141 10;
#X msg 547 141 11;
#X msg 592 140 12;
#X msg 640 143 13;
#X msg 688 145 14;
#X msg 735 145 15;
#X obj 447 188 f;
#X obj 145 57 unpack 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;
#X obj 145 20 inlet;
#X obj 447 256 outlet;
#X obj 447 220 * 2;
#X obj 670 264 outlet;
#X obj 23 17 inlet;
#X connect 0 0 1 0;
#X connect 0 1 2 0;
#X connect 1 0 32 0;
#X connect 2 0 9 0;
#X connect 2 1 3 0;
#X connect 3 0 10 0;
#X connect 3 1 4 0;
#X connect 4 0 11 0;
#X connect 4 1 5 0;
#X connect 5 0 12 0;
#X connect 5 1 6 0;
#X connect 6 0 13 0;
#X connect 6 1 7 0;
#X connect 7 0 14 0;
#X connect 7 1 8 0;
#X connect 8 0 15 0;
#X connect 8 1 16 0;
#X connect 9 0 32 0;
#X connect 10 0 32 0;
#X connect 11 0 32 0;
#X connect 12 0 32 0;
#X connect 13 0 32 0;
#X connect 14 0 32 0;
#X connect 15 0 32 0;
#X connect 16 0 24 0;
#X connect 16 1 17 0;
#X connect 17 0 25 0;
#X connect 17 1 18 0;
#X connect 18 0 26 0;
#X connect 18 1 19 0;
#X connect 19 0 27 0;
#X connect 19 1 20 0;
#X connect 20 0 28 0;
#X connect 20 1 21 0;
#X connect 21 0 29 0;
#X connect 21 1 22 0;
#X connect 22 0 30 0;
#X connect 22 1 23 0;
#X connect 23 0 31 0;
#X connect 23 1 37 0;
#X connect 24 0 32 0;
#X connect 25 0 32 0;
#X connect 26 0 32 0;
#X connect 27 0 32 0;
#X connect 28 0 32 0;
#X connect 29 0 32 0;
#X connect 30 0 32 0;
#X connect 31 0 32 0;
#X connect 32 0 36 0;
#X connect 33 0 0 1;
#X connect 33 1 2 1;
#X connect 33 2 3 1;
#X connect 33 3 4 1;
#X connect 33 4 5 1;
#X connect 33 5 6 1;
#X connect 33 6 7 1;
#X connect 33 7 8 1;
#X connect 33 8 16 1;
#X connect 33 9 17 1;
#X connect 33 10 18 1;
#X connect 33 11 19 1;
#X connect 33 12 20 1;
#X connect 33 13 21 1;
#X connect 33 14 22 1;
#X connect 33 15 23 1;
#X connect 34 0 33 0;
#X connect 36 0 35 0;
#X connect 38 0 0 0;
#X restore 250 161 pd moses-junk;
#X floatatom 42 128 5 0 0 0 - - -;
#X connect 0 0 6 0;
#X connect 0 0 4 0;
#X connect 1 0 3 0;
#X connect 3 0 4 1;
#X connect 3 1 5 1;
#X connect 4 0 2 0;
#X connect 4 1 5 0;
#X connect 5 0 2 0;
#X restore 15 438 pd checkProb;
#X obj 74 173 tabdump \$0-probArray;
#X obj 74 136 t b l l l;
#X obj 17 135 t b b;
#N canvas 79 125 837 448 do_math_on_the_list 0;
#X obj 36 50 inlet;
#X obj 108 191 f;
#X obj 60 132 list-drip;
#X obj 120 93 t l b l;
#X obj 262 143 list-len;
#X obj 85 236 +;
#X msg 142 131 0;
#X obj 67 162 t f b;
#X obj 91 271 list-lastx;
#X msg 113 56 0.1 0.2 0.3 0.4;
#X obj 90 300 list-rev;
#X obj 91 332 outlet;
#X connect 0 0 3 0;
#X connect 1 0 5 1;
#X connect 2 0 7 0;
#X connect 3 0 2 0;
#X connect 3 1 6 0;
#X connect 3 2 4 0;
#X connect 4 0 8 1;
#X connect 5 0 8 0;
#X connect 5 0 1 1;
#X connect 6 0 1 1;
#X connect 7 0 5 0;
#X connect 7 1 1 0;
#X connect 8 0 10 0;
#X connect 9 0 3 0;
#X connect 10 0 11 0;
#X restore 126 334 pd do_math_on_the_list;
#X obj 114 487 print;
#X connect 0 0 7 0;
#X connect 1 0 4 1;
#X connect 4 0 15 0;
#X connect 5 0 8 0;
#X connect 8 0 14 0;
#X connect 8 1 13 0;
#X connect 9 0 11 0;
#X connect 11 0 6 0;
#X connect 11 0 16 0;
#X connect 12 0 11 1;
#X connect 13 0 12 0;
#X connect 13 1 4 0;
#X connect 13 2 1 0;
#X connect 13 3 0 0;
#X connect 14 0 9 0;
#X connect 14 1 12 0;
#X connect 15 0 3 0;


More information about the Pd-list mailing list