Splunk Search

How do I generate a random number between a specific range?

sravani27
Path Finder

Hi, How can I generate a random number between 1 to 20. I random() function doesn't allow to specify a range. please help

Tags (1)

PickleRick
SplunkTrust
SplunkTrust

One thing - in case of small ranges it might be negligible but if you want a random number from a big range (like between 0 and 1.5*2^30) performing a modulo on random() will not give you uniform distribution.

0 Karma

gbhatti
Engager

@PickleRick I was not aware of this. Thanks for pointing it out.

0 Karma

worshamn
Contributor

Building a bit on @richgalloway 's answer I believe this works and allows you to set the high and low range. I added just some extra fluff for testing, your eval line could just look line 4 with high and low replaced with your range:

| makeresults
| eval high = 100
| eval low = 10
| eval rand = round(((random() % high)/(high)) * (high - low) + low)
| eval inRange = if(rand <= high AND rand >= low, "True", "False")

gbhatti
Engager

@worshamn Kudos! Building on your solution I slightly simplified the math.

 

...
| eval rand = random() % (high - low + 1) + low
...

 

 

woodcock
Esteemed Legend

@ppablo_splunk , this one should get moderator-answered.

0 Karma

richgalloway
SplunkTrust
SplunkTrust

Try using the modulo operator. For example, ... | eval rand=(random() % 20) + 1 | ....

---
If this reply helps you, Karma would be appreciated.
Get Updates on the Splunk Community!

Get Early Access to AI Playbook Authoring: Apply for the Alpha Private Preview ...

Passionate about security automation? Apply now to our AI Playbook Authoring Alpha private preview ...

Reduce and Transform Your Firewall Data with Splunk Data Management

Managing high-volume firewall data has always been a challenge. Noisy events and verbose traffic logs often ...

Automatic Discovery Part 1: What is Automatic Discovery in Splunk Observability Cloud ...

If you’ve ever deployed a new database cluster, spun up a caching layer, or added a load balancer, you know it ...