R: Creating a Vector with a Specific Amount of Random Numbers

I was hoping someone could help point me in the right direction to create a vector in R, containing a defined amount of randomly generated numbers. I am a complete newbie to R, and I have learned that the concatenate function is used for creating vectors. However, I wish to populate the vector with 50 random numbers. I do not wish to specify a range or any other conditions for the numbers.

MyVectorObject <- c(...)

Any suggestions would be greatly appreciated!

2 Answers

It depends on which numbers you want to generate. These are some options.

x1 <- rpois(n = 50, lambda = 10)
x2 <- runif(n = 50, min = 1, max = 10)
x3 <- sample(x = c(1, 3, 5), size = 50, replace = TRUE)
0

If we are talking about integer numbers, you want to generate number in interval <-base::.Machine$integer.max, base::.Machine$integer.max> which is for example on my computer interval <-2147483647,2147483647>


Implementation

you can use base::sample to generate positive numbers from 1 to base::.Machine$integer.max

random.pos <- function(N) { 
  int.max        <- .Machine$integer.max
  return(sample(int.max, N, replace=TRUE))
}

if you want also negative numbers, you can use

random.posneg <- function(N) {
  int.max        <- .Machine$integer.max   
  random.numbers <- sample(int.max, N, replace = TRUE)
  random.signs   <- sample(c(1,-1), N, replace=TRUE)      
  return(random.numbers * random.signs)
}

NOTE: No one from functions specified above does generate 0 (zero)

The best approach (by my opinion) is to use base::runif function.

random.runif <- function(N) {
  int.max        <- .Machine$integer.max
  int.min        <- -int.max
  return(as.integer(runif(N, int.min, int.max)))
}

This will be little bit slower then using base::sample but you get random numbers uniformly distributed with possible zero.


Marcus Vance

Marcus Vance

Cybersecurity & Digital Privacy Researcher

Marcus Vance is a cybersecurity auditor and technology writer dedicated to educating the public about online safety, data privacy regulations, enterprise security, and emerging cyber threats.