ADOBE AFTER EFFECTS: Forum Expressions Tutorials Creative Cloud

Range of Numbers without Repeating

COW Forums : Adobe After Effects Expressions

<< PREVIOUS   •   FAQ   •   VIEW ALL   •   PRINT   •   NEXT >>
Dustin Wilson
Range of Numbers without Repeating
on Nov 16, 2018 at 2:24:28 pm

I'm trying to generate a random whole number between 0 and 64 without repeating. I've seen a few other threads with somewhat similar goals, but I can't quite get there. Here's what I have so far, but they're still repeating...

var holdTime = 10;
seedRandom(Math.floor(time/holdTime), timeless = true);
var nums = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64],
ranNums = [],
i = nums.length,
j = 0;

while (i--) {
j = Math.floor(random() * (i+1));

Return to posts index

Dan Ebberts
Re: Range of Numbers without Repeating
on Nov 16, 2018 at 4:46:22 pm

I'm not sure this is exactly what you're after, but it should give a sequence without repeats:

var holdTime = 10;
nums = [];
for (i = 0; i <= 64; i++) nums.push(i);
for (i = 0; i < nums.length; i++){
idx = i + Math.floor(random(nums.length - i));
temp = nums[i];
nums[i] = nums[idx];
nums[idx] = temp;
idx = Math.floor(time/holdTime)%nums.length;

If you go beyond the first sequence (65 numbers), you should get a different, non-repeating sequence, so it's possible the 66th number could match the 65th. If that's a problem, you could make a slight modification so that the first sequence just repeats.



Return to posts index

Dustin Wilson
Re: Range of Numbers without Repeating
on Nov 16, 2018 at 5:23:41 pm

Dan the man!

I can't thank you enough, this is exactly what I was trying to accomplish!

Thanks again for you time and help!

Return to posts index

<< PREVIOUS   •   VIEW ALL   •   PRINT   •   NEXT >>
© 2019 All Rights Reserved