# Golang generate random boolean [Simple Examples]

Written by - Tuan Nguyen
Topics we will cover

In this tutorial, we will walk through some examples of generating random boolean in Golang

## Example 1: Simple rand.Intn() solution to generate random boolean

`func (r *Rand) Intn(n int) int`: Intn returns, as an int, a non-negative pseudo-random number in the half-open interval [0,n). It panics if `n <= 0`.

In this example, we will write a function using `rand.Intn()` to random generate boolean. The ideal is: we random an int (which can be 0 or 1), if the result is `0` then return `false`, otherwise return true. Consider the code show below:

``````package main

import (
"math/rand"
"time"
"fmt"
)

func main() {
// try to generate random boolean 20 times
for i := 1; i <= 20; i++ {
testBoo := randomBool()
fmt.Println("Random the", i, "time, result is: ", testBoo)
}
}

// returns a random boolean value based on the current time
func randomBool() bool {
rand.Seed(time.Now().UnixNano())
return rand.Intn(2) == 1
}``````

Output:

```Random the 1 time, result is:  false
Random the 2 time, result is:  false
Random the 3 time, result is:  false
Random the 4 time, result is:  false
Random the 5 time, result is:  true
Random the 6 time, result is:  true
Random the 7 time, result is:  true
Random the 8 time, result is:  true
Random the 9 time, result is:  true
Random the 10 time, result is:  false
Random the 11 time, result is:  false
Random the 12 time, result is:  false
Random the 13 time, result is:  false
Random the 14 time, result is:  true
Random the 15 time, result is:  true
Random the 16 time, result is:  true
Random the 17 time, result is:  true
Random the 18 time, result is:  true
Random the 19 time, result is:  true
Random the 20 time, result is:  true```

Noted that: this is indicated in the math/Rand package documentation: If distinct behavior is desired for each run, use the Seed method to initialize the default Source. If we don't seed, our application will always return the same pseudo-random data.

## Example 2: Same idea but some variant examples

This function returns `true` if the random integer is even else it returns `false`:

``````func randomBool() bool{
rand.Seed(time.Now().UnixNano())
return rand.Int() % 2 == 0
}``````

In this code shown below, we random a float32, if the value is smaller than `0.5` then return `true`, otherwise return `false`:

``````// returns a random boolean value based on the current time
func randomBool() bool {
rand.Seed(time.Now().UnixNano())
return rand.Float32() < 0.5
}``````
``````package main

import (
"fmt"
"math/rand"
"time"
)

func main() {
// try to generate random boolean 20 times
for i := 1; i <= 20; i++ {
testBoo := randomBool()
fmt.Println("Random the", i, "time, result is: ", testBoo)
}
}

func randomBool() bool {
rand.Seed(time.Now().UnixNano())
return rand.Float32() < 0.5
}``````

Output:

```Random the 1 time, result is:  false
Random the 2 time, result is:  false
Random the 3 time, result is:  false
Random the 4 time, result is:  false
Random the 5 time, result is:  false
Random the 6 time, result is:  false
Random the 7 time, result is:  false
Random the 8 time, result is:  false
Random the 9 time, result is:  false
Random the 10 time, result is:  false
Random the 11 time, result is:  false
Random the 12 time, result is:  true
Random the 13 time, result is:  true
Random the 14 time, result is:  true
Random the 15 time, result is:  true
Random the 16 time, result is:  true
Random the 17 time, result is:  false
Random the 18 time, result is:  false
Random the 19 time, result is:  false
Random the 20 time, result is:  false```

## Summary

A few examples of creating a random boolean have been covered. The general idealÂ is to generate a single random number between 0 and 2, and to return true if the value is 1Â and false otherwise. The article also introduces a few modifications on the previously mentioned strategy.

## References

Views: 22

Tuan Nguyen

He is proficient in Golang, Python, Java, MongoDB, Selenium, Spring Boot, Kubernetes, Scrapy, API development, Docker, Data Scraping, PrimeFaces, Linux, Data Structures, and Data Mining. With expertise spanning these technologies, he develops robust solutions and implements efficient data processing and management strategies across various projects and platforms. You can connect with him on LinkedIn.

Categories GO

Can't find what you're searching for? Let us assist you.

Enter your query below, and we'll provide instant results tailored to your needs.

If my articles on GoLinuxCloud has helped you, kindly consider buying me a coffee as a token of appreciation.

For any other feedbacks or questions you can send mail to admin@golinuxcloud.com