Open In App

Generating Random Numbers Until Some Condition Is Met in R

R Language is mainly used for machine learning, statistics, and data analysis. Objects, functions, and R packages can easily be created by R. However we can use this language for other purposes like generating random numbers until a number greater than 0.9 is generated. We can do that using loops as R supports three kinds of loops.

Loops

To solve this problem first we need to understand the Concepts of Loops in R– R is very good at performing repetitive tasks. If we want a set of operations to be repeated several times we use what’s known as a loop. When you create a loop, R will execute the instructions in the loop a specified number of times or until a specified condition is met.



There are three main types of loops in R

Uniform Distribution

A uniform distribution is a probability distribution where each value in the range from a to b has an equal chance of being selected. The ‘runif()’ function is used to generate sequence of random numbers in the uniform distribution.



Syntax:
runif(n, min = 0, max = 1)
Parameter:
n= number of random samples
min=minimum value(by default 0)
max=maximum value(by default 1)


Generate random numbers using For Loop




# initialize a variable to store the random number
x <- 0
 
# use a for loop to generate random numbers from a uniform distribution
for (i in 1:100) {
  # generate a random number between 0 and 1
  x <- runif(1)
   
  # print the random number
  print(x)
   
  # check if the random number is greater than 0.9
  if (x > 0.9) {
    # break the loop
    break
  }
}

Output
[1] 0.5482922
[1] 0.81156
[1] 0.3938314
[1] 0.9569094




Generate random numbers using While Loop

1. First, it initializes a variable called `x` and assigns it the value of 0. This variable will store the random number that will be generated in each iteration of the loop.

2. Next, it uses a `while` loop to repeat a block of code as long as a condition is true. The `while` loop has a condition that checks if the value of `x` is less than or equal to 0.9. The `while` loop is enclosed by curly braces `{}` that indicate the start and end of the loop body.

3. Inside the loop body, the code does the following:

a. It generates a random number between 0 and 1 using the `runif` function, which takes one argument: the number of random numbers to generate. In this case, it is 1. The random number is assigned to the variable `x`.

b. It prints the value of `x` using the `print` function, which displays the output on the console.

4. After the loop ends, the code stops running.




# initialize a variable to store the random number
x <- 0
 
# use a while loop to generate random numbers from a uniform distribution
while (x <= 0.9) {
  # generate a random number between 0 and 1
  x <- runif(1)
   
  # print the random number
  print(x)
}

Output
[1] 0.1120839
[1] 0.4356025
[1] 0.02041804
[1] 0.5944996
[1] 0.7476459
[1] 0.3314883
[1] 0.4432616
[1] 0.8747775
[1] 0.2771189
[1] 0.4299433
[1] 0.2105656
[1] 0.2088417
[1] 0.7823486
[1] 0.3891303
[1]...




Generate random numbers using Repeat Loop

1. First, it initializes a variable called `x` and assigns it the value of 0. This variable will store the random number that will be generated in each iteration of the loop.

2. Next, it uses a `repeat` loop to repeat a block of code indefinitely. The `repeat` loop is enclosed by curly braces `{}` that indicate the start and end of the loop body.

3. Inside the loop body, the code does the following:

a. It generates a random number between 0 and 1 using the `runif` function, which takes one argument: the number of random numbers to generate. In this case, it is 1. The random number is assigned to the variable `x`.

b. It prints the value of `x` using the `print` function, which displays the output on the console.

c. It checks if the value of `x` is greater than 0.9 using the `if` statement, which evaluates a logical condition and executes a block of code if it is true. The `if` statement is also enclosed by curly braces `{}` that indicate the start and end of the conditional block.

d. Inside the conditional block, the code uses the `break` statement, which terminates the execution of the loop and jumps out of it.

4. After the loop ends, the code stops running.




# initialize a variable to store the random number
x <- 0
 
# use a repeat loop to generate random numbers from a uniform distribution
repeat {
  # generate a random number between 0 and 1
  x <- runif(1)
   
  # print the random number
  print(x)
   
  # check if the random number is greater than 0.9
  if (x > 0.9) {
    # break the loop
    break
  }
}

Output
[1] 0.288129
[1] 0.5386403
[1] 0.1097055
[1] 0.6238026
[1] 0.9355597


Article Tags :