Uniform Random Numbers
To generate a single random number between 1 and 20, you can use the runif() function:
Random_number = runif(n=1, min=1, max=20)
cat("The required random number is",Random_number)
Output:
The required random number is 4.743101
To generate multiple random numbers (e.g., five) between 1 and 20, you can use the same runif() function:
Random_number = runif(n=5, min=1, max=20)
cat("The required random number are",Random_number)
Output:
The required random number are 5.840892 17.32289 1.990938 17.56842 16.74266
Random Number generations Using sample() function
To generate a single random integer between 1 and 20 (inclusive), you can use the sample() function:
Random_integer = sample(1:20, 1)
cat("The required random number is",Random_integer)
Output:
The required random number is 16
Several random integers (e.g., five) between 1 and 20, you can use the sample() function with or without replacement:
Random_integers_with_replacement = sample(1:20, 5, replace=TRUE)
cat("The required random number are",Random_integers_with_replacement)
Output:
The required random number are 20 7 13 17 15
Random_integers_without_replacement = sample(1:20, 5, replace=TRUE)
cat("The required random number is",Random_integers_without_replacement)
Output:
The required random number is 10 4 8 7 14
Random Number generations from Binomial(n,p)
# Generate one random number from a binomial distribution
n_trials = 10
prob_success = 0.5
Random_number = rbinom(n = 1, size = n_trials, prob = prob_success)
cat("The required random number is",Random_number)
Output:
The required random number is 6
# Generate five random number from a binomial distribution
n_trials = 10
prob_success = 0.5
Random_number = rbinom(n = 5, size = n_trials, prob = prob_success)
cat("The required random number are",Random_number)
Output:
The required random number are 6 5 5 6 4
Random Number generations from Negative Binomial
# Generate one random number from a binomial distribution
rNB <- function(n, r, p) {
# Create an empty vector of length n for our results
draws <- numeric(n)
# For each of the n trials, get a negative binomial sample
for (i in 1:n) {
# Initialize success and failure counters for this draw
failures <- successes <- 0
# Run Bernoulli trials, counting successes and failures
while (successes < r) {
x <- rbinom(1, 1, p) # Bernoulli trial
if (x == 1) {
successes <- successes + 1
} else {
failures <- failures + 1
}
}
# Store the total number of trials (successes + failures)
draws[i] <- successes + failures
}
return(draws)
}
# Example usage: Generate 3 random numbers from a negative binomial distribution
result <- rNB(3, 2, 0.1)
cat("The required random number are",result)
Output:
The required random numbers are 6 13 29
R provides functions to generate random numbers from a negative binomial distribution:
Random_numbers <- rnbinom(5, size = 2, prob = 0.1)
cat("The required random number are",Random_numbers)
Output:
The required random number are 3 45 54 62 14
Random Number generations from Poisson Distribution
Generate_poisson<- function(n, lambda) {
results <- numeric(n)
for (i in 1:n) {
k <- 0
p <- 1
while (p * runif(1) >= exp(-lambda)) {
k <- k + 1
p <- p * runif(1)
}
results[i] <- k
}
return(results)
}
# Generate 10 custom random numbers from a Poisson distribution with mean 5
Random_numbers <- Generate_poisson(10, lambda = 5)
cat("Generated random numbers from a Poisson distribution are",Random_numbers )
Output:
Generated random numbers from a Poisson distribution are 4 2 1 2 2 2 4 3 7 5
Random number generation from poisson using function:
Ran_Poisson<-function(n, lambda){
return(rpois(n,lambda))
}
Output:
> Ran_Poisson(5,10)
[1] 16 12 12 9 10
Random Number generations from Bernoulli's Distribution
library(Rlab)
#Set seed for reproducibility
set.seed(98989)
# Specify sample size
N <- 10
# Generate N Bernoulli distributed random numbers
y_rbern <- rbern(N, prob = 0.7)
y_rbern
Output:
> y_rbern
[1] 1 1 1 1 1 0 0 1 1 0
Random Number generations from Exponential Distribution
# Set seed for reproducibility
set.seed(13579)
# Specify sample size
N <- 100
# Generate N exponential random numbers
y_rexp <- rexp(N, rate = 1/50)
y_rexp
Output:
> y_rexp
[1] 107.6157122 11.2188606 104.7116361 3.8431510 20.6845973 7.4708652 30.7563908 80.2510037
[9] 21.1764727 64.3978099 93.4844598 27.2181442 29.0236761 18.1258461 58.9694500 79.3425261
[17] 31.8051863 48.3820900 3.5318149 42.1109252 3.8868751 1.3819650 97.0854591 56.9526403
[25] 24.5344498 93.1644635 37.5381645 159.9778760 54.3828850 31.5900227 154.2897791 26.4582107
[33] 34.9575916 42.3402307 41.7710172 16.8678684 141.2699692 56.2902900 22.1430099 1.3056204
[41] 65.2998574 9.7407063 4.9461257 106.3925602 76.2343808 29.4362428 21.5559995 207.4229422
[49] 20.3033370 122.4570193 15.3409041 64.6269500 6.0163067 41.1748329 54.4734275 38.3170893
[57] 18.0162689 148.0918445 2.4148603 25.7041999 170.6221323 99.9498461 85.2357830 7.6987410
[65] 4.1017758 8.0714411 76.3919074 50.4165119 18.4197932 51.4547921 19.2005722 29.9171246
[73] 29.6238078 7.7646599 0.3573095 155.2907456 2.1797359 19.6449036 239.2032811 206.9141152
[81] 27.5621382 173.6123289 18.0533585 164.6637060 43.3455588 4.9933570 15.4041901 101.7699516
[89] 12.0882713 0.3358015 26.5466179 6.3820362 1.9195739 21.9537303 37.1818093 76.9075232
[97] 90.8912995 65.1759846 101.2406542 0.5962613
Random Number generations from Geometric Distribution
# Set seed for reproducibility
set.seed(53535)
# Specify sample size
N <- 10
# Generate N geometrically distributed random numbers
y_rgeom <- rgeom(N, prob = 0.5)
y_rgeom
Output:
> y_rgeom
[1] 107.615712 11.218861 104.711636 3.843151 20.684597 7.470865 30.756391 80.251004
[9] 21.176473 64.397810
Random Number generations from Normal Distribution
# Generate 100 random numbers from a standard normal distribution
Random_numbers <- rnorm(100, mean = 0, sd = 1)
# Print the generated random numbers
cat("The required random number are",Random_numbers)
Output:
> cat("The required random number are",Random_numbers)
The required random number are 1.05251 0.8048827 1.409367 -0.265953 0.5786106 1.376858 0.9271229
-0.1620384 0.7840546 -0.3525613
Random Number generations from Hypergeometric Distribution
# Set seed for reproducibility
set.seed(400)
# Specify sample size
N <- 10000
# Generate N hypergeometrically distributed random numbers
y_rhyper <- rhyper(N, m = 50, n = 20, k = 30)
y_rhyper
Output:
> y_rhyper
[1] 23 23 20 22 19 22 23 21 23 22
Random Number generations from Gamma Distribution
# Set shape and rate parameters
Shape <- 4.2503
Rate <- 1 / 7037
# Generate 460 random numbers from the Gamma distribution
Random_numbers <- rgamma(n = 460, shape = Shape, rate = Rate)
Random_numbers
Output:
> Random_numbers
[1] 24108.42 28817.65 48804.81 42067.64 16014.85 27343.59 12058.86 24438.38 17322.35 32416.55
Random Number generations from Beta Distribution
# Set shape parameters
Shape1 <- 2.5
Shape2 <- 1.8
# Generate 460 random numbers from the Beta distribution
Random_numbers <- rbeta(n = 10, shape1 = Shape1, shape2 = Shape2)
Random_numbers
Output:
> Random_numbers
[1] 0.9001593 0.2326702 0.5161922 0.7149669 0.9403594 0.5856676 0.8791154 0.4175857 0.7174529
[10] 0.6416100
Random Number generations from Lognormal Distribution
# Generate 20 random numbers from a lognormal distribution
Geometric_mean<-10
Geometric_standard_deviation<-2.5
Log_normal_samples <- rlnorm(20, log(Geometric_mean), log(Geometric_standard_deviation))
cat("The required random number are",Log_normal_samples)
Output:
> cat("The required random number are",Log_normal_samples)
The required random number are 2.766693 36.3216 8.416257 22.13156 7.413559 10.73409 6.664009 14.04007 32.96495 4.149306 4.568918 13.96765 18.95764 8.507223 2.701645 6.854139 16.9728 8.927866 10.61546 4.620714
Random Number generations from Laplace Distribution