Hello everyone, I was reading the table of python expressions on the wiki and I found an expression that gets a unique random number every frame, but in each frame is very fast, I was wondering if it is possible to write an expression that I can get unique values every 100 frames.

I hope everyone can understand my question, thank you!

I generally feel like absTime prototyping, but not ideal for actual deployment. That said, you can use a few different expressions to help make this work depending on what kind of mechanics you’re looking for.

Round does just that… rounds a number up to a set number of decimal places.

`math.`

`ceil`

(x)Return the ceiling of

x, the smallest integer greater than or equal tox. Ifxis not a float, delegates to`x.__ceil__()`

, which should return an`Integral`

value.

It’s worth knowing that `ceil()`

will return an integer, while `round()`

returns a float. Most TouchDesigner parameters don’t care about this, but if you were doing some other tricky python, it’d be worth knowing if you were working with a float or int depending on the operation you were trying to achieve.

Hello, as you said @raganmd sometimes **abstime** are not the ideal expression to get some value, let’s think I don’t want exponential numbers, but I want to get some random number in a kind of specified range… so I tried to fit **math.ceil** with the expression **tdu.rand(absTime.frame*0.01)** so I got to : **math.ceil(tdu.rand(math.ceil(absTime.frame*0.01)) 360)*

I had to write

**math.ceil**twice why wasn’t me turning integer values, plus I multiplied by 360 why is the range I need to vary…

To explain better, my project is actually to vary the rotation of an internal line of a dodecagon but still, I would like these numbers to be divisible by 12 to generate me rotation angles compatible with dodecagon, because of formula α (angle) = 360/ number of faces =12

.

.

.

Thank you.

Ahh - I see where you’re going @Rawlim.

Something like this might be interesting for you then:

Starting with our pattern CHOP - we set this up so that the length of our pattern is derived from the number of divisions in our circle. Next we’ll make sure that our amplitude is 1 less our length, and that we’re outputting an integer.

You can see in the chop to DAT that this gives us a ramp of 0 to 11

Next in a math CHOP we can make sure that multiply each of these values by 360 / the number of divisions in our circle:

These rotation values will make sure that our line points to a vertex on our circle.

We can then put these in a random order with a sort CHOP:

Using a timer and a look up we can set the interval between changes, and use the resulting cycles from our timer to look up one of these random points in our sort CHOP:

I think this is closer to what you’re looking for, and hope it helps.

Take a look at the file here to see how this is all working:

random-rotation-to-known-points.toe (4.8 KB)

This is a pretty good explanation @raganmd, this is exactly what i was trying to do… thank you very much