How to generate a population of random numbers within a certain exponentially increasing range

David Wright

I have 16068 datapoints with values that range between 150 and 54850 (mean = 3034.22). What would the R code be to generate a set of random numbers that grow in frequency exponentially between 54850 and 150?

I've tried using the rexp() function in R, but can't figure out how to set the range to between 150 and 54850. In my actual data population, the lambda value is 25.

set.seed(123)
myrange <- c(54850, 150)
rexp(16068, 1/25, myrange)

The call produces an error.

Error in rexp(16068, 1/25, myrange) : unused argument (myrange)

The hypothesized population should increase exponentially the closer the data values are to 150. I have 25 data points with a value of 150 and only one with a value of 54850. The simulated population should fall in this range.

jay.sf

This is really more of a question for math.stackexchange, but out of curiosity I provide this solution. Maybe it is sufficient for your needs.

First, ?rexp tells us that it has only two arguments, so we generate a random exponential distribution with the desired length.

set.seed(42)         # for sake of reproducibility
n <- 16068
mr <- c(54850, 150)  # your 'myrange' with less typing

y0 <- rexp(n, 1/25)  # simulate exp. dist.
y <- y0[order(-y0)]  # sort

Now we need a mathematical approach to rescale the distribution.

# f(x) = (b-a)(x - min(x))/(max(x)-min(x)) + a
y.scaled <- (mr[1] - mr[2]) * (y - min(y)) / (max(y) - min(y)) + mr[2]

Proof:

> range(y.scaled)
[1]   150.312 54850.312

That's not too bad.

Plot:

plot(y.scaled, type="l")

enter image description here

Note: There might be some mathematical issues, see therefore e.g. this answer.

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

Pyspark - how to generate random numbers within a certain range of a column value?

How do I generate random numbers but not repeating and within a certain range based on user input?

How do I generate a random range of numbers within another range?

How to generate random Double numbers in Google Sheets within range?

Generate random numbers, letters or characters within a range

Generate 'n' unique random numbers within a range

generate list of successive numbers within some range increasing by 0.1

How do i generate 2 random numbers, once within the range of 50 and 259, and once within 50 and 159?

How to generate a random number within a range in D

How to generate a random number within a range in substrate?

How to generate random numbers by a certain step?

How to generate random numbers within a limit?

How to generate random numbers within a limit in dart

How to generate random numbers that add up to a certain number and are generated in a range in JavaScript?

How to generate a bunch of lists of random numbers which have no repeats but in a certain range with Python?

how to generate unique random numbers with a specific range

How to generate random numbers in range from INPUT?

How to get this PRNG to generate numbers within the range?

How to generate n random numbers within a range matching a fixed sum in javascript?

Generate Array of Unique Random Numbers within Inclusive Range

I want to generate random numbers within given range in java

C++ - generate random numbers following normal distribution within range

generate random numbers within a range with a percentage of them a specific value

generate sample of numbers within range random amount of times in chronological order

Generate Random Numbers Within A Seed

Generate random numbers in specific range

Generate a random range of numbers in excel

How to generate random samples from a population in Python?

How can I generate a random number in a certain range?