Random number functions


#1

Perhaps I’m missing it, but how do I generate random numbers? I am missing “randbetween” and “rnd” from Excel.
Thanks for any and all help.


#2

We don’t have any random number functions at the moment, but I’ll reach out to you once we implement something like this. Can you share why you need a random number function? We might be able to provide a workaround.


#3

I use Airtable to generate sample data for prototyping/mocking up a series of applications my company is developing. I often want to have sample data that represents a meaningful distribution across a set of values. In the past I either used Excel or https://www.mockaroo.com/

It’d be great to just use one tool.


#4

Am also missing a Random function,

  • which would take a Random Seed.
  • Allow negative to positive range
  • Allow fractions

Looking for a random function something like:
RANDOM()
RANDOM(Seed)
RANDOM(Seed, Range_Start, Range_End, Fraction_Digits)

use 0 to ignore seed
range start/end, either or both, could be negative.
fraction digits, for number of fraction digits in output

RANDOM(0,0,200) => 74 (0 for ignore seed, no fractional digits)

RANDOM(8495,-200,-100,5) => -158.78304 (8495 for seed, negative start and end, with 5 fractional digits)

RANDOM(8495,200,-100,5) => 158.78304 (8495 for seed, with 5 fractional digits, where start is higher than end)

RANDOM(VALUE(DATETIME_FORMAT(NOW(), ‘x’)),1000,2000,7) => 1622.9287305 (use current datetime to seed, with 7 fraction digits)


#5

I am looking for a RANDOM Sort capability. I am building a table of Questions to be entered into an app and I want to randomize the questions before they are manually entered or imported.


#6

@Ron_Sheridan if you have any input at all when it comes to development of that app, it would probably be a couple of minutes work for the programmer to shuffle the questions over there before they are shown. :slight_smile:


#7

PING. Any update on getting random number generator?


#8

Hey @Daniel_Robbins, I thought of something.

If you create a formula with VALUE(RECORD_ID()) you’ll get random numbers for each record. Maybe you can use this a a starting point. With some additional formulas (or even rollups) you should be able to scale it / put it in a certain range.

:slight_smile:


#9

Thanks. I’ll try that.


#10

You could actually expand that by using the CREATED_TIME() function too.

Grab the numbers from the time portion…

SUBSTITUTE(TIMESTR(CREATED_TIME()), ":", "")

Or only the seconds for example and use that to do an extra calculation, define a random position in the string (maybe with REPT) or whatever.


#11

Sorry but it is not working. With this formula I get the same numbers for several rows…


#12

Not very likely. Did you try to refresh the base?


#13

Yes didn´t help.

May be I am doing something wrong?


#14

Sorry. You are right. :slight_smile:


#15

What it does is grab numbers from the RECORD_ID. So the numbers you see are random, but not unique.

The other trick (with time) maybe works better in your case.

A combination of the two methods is an option too of course…


#16

With Record ID you get an unique output. But the outcome looks crazy (many numbers and letters) and so it is not realy usable for an ordernumber.


#17

For order numbers you can also use AT’s Auto Number field. Maybe with something in front of it…


#18

I want to hide the casenumbers to prevent vendors from gathering information out of it. So unfortunately this solution is not working for me.

In software like excel…you have the function RANDOM() for it.


#19

Try DATETIME_FORMAT(CREATED_TIME(),'X').

That will give you the Unix timestamp as a string; e.g., ‘1511398652’. You can then chop it up or otherwise obfuscate it as necessary. The results won’t be random, but they should be unique — with one exception: The first three records in a table are created at the time the table is, and all bear the same timestamp.

In theory, you can use 'x' instead of 'X' as the format specifier and get the timestamp with milliseconds included — ‘1360013296123’ is the example from the Airtable help page — but it appears CREATED_TIME() is stored precise to the second only. The results I get with DATETIME_FORMAT(CREATED_TIME(),'x') all have three zeroes as the rightmost three digits.


#20

Thanks Vann Hall I will use that!