ホームページ バックエンド開発 Golang golangで非反復乱数を生成する方法

golangで非反復乱数を生成する方法

Dec 23, 2019 am 10:46 AM
乱数

golangで非反復乱数を生成する方法

Go の math/rand パッケージは、乱数を生成するための API を提供します。重要な API は次のとおりです:

// 该函数设置随机种子
// 若不调用此函数设置随机种子,则默认的种子值为1,由于随机算法是固定的,
// 如果每次都以1作为随机种子开始产生随机数,则结果都是一样的,因此一般
// 都需要调用此函数来设置随机种子,通常的做法是以当前时间作为随机种子
// 以保证每次随机种子都不同,从而产生的随机数也不通
// 该函数协程安全
func Seed(seed int64)

// 以下函数用来生成相应数据类型的随机数,带n的版本则生成[0,n)的随机数。
// 注意生成的随机数都是非负数
func Float32() float32
func Float64() float64
func Int() int
func Int31() int32  // 注意该函数只返回int32表示范围内的非负数,位数为31,因此该函数叫做Int31
func Int31n(n int32) int32
func Int63() int64
func Int63n(n int64) int64
func Intn(n int) int
func Uint32() uint32
func Uint64() uint64

// 另外,rand包还提供了一个类,接口和上面的大致相同:
type Rand struct {
    // ...
}

// 创建一个以seed为种子的源,注意该源不是协程安全的
func NewSource(seed int64) Source
// 以src为源创建随机对象
func New(src Source) *Rand
// 设置或重置种子,注意该函数不是协程安全的
func (r *Rand) Seed(seed int64)
// 下面的函数和全局版本的函数功能一样
func (r *Rand) Float32() float32
func (r *Rand) Float64() float64
func (r *Rand) Int() int
func (r *Rand) Int31() int32
func (r *Rand) Int31n(n int32) int32
func (r *Rand) Int63() int64
func (r *Rand) Int63n(n int64) int64
func (r *Rand) Intn(n int) int
func (r *Rand) Uint32() uint32
func (r *Rand) Uint64() uint64
ログイン後にコピー

乱数を生成するときは、現在時刻をランダム シードとして使用します。タイム パッケージを使用して現在時刻を生成することもできます:

// 返回当前时间
func Now() Time

// 为了将Time类型转换为int64类型以作为随机种子
// 可以使用如下两个函数:

// 返回从1970年1月1日到t的秒数
func (t Time) Unix() int64
// 返回从1970年1月1日到t的纳秒数
func (t Time) UnixNano() int64
ログイン後にコピー

例:

package main
import (
    "fmt"
    "math/rand"
    "time"
)
func main() {
    //
    // 全局函数
    //
    rand.Seed(time.Now().Unix())

    fmt.Println(rand.Int())       // int随机值,返回值为int
    fmt.Println(rand.Intn(100))   // [0,100)的随机值,返回值为int
    fmt.Println(rand.Int31())     // 31位int随机值,返回值为int32
    fmt.Println(rand.Int31n(100)) // [0,100)的随机值,返回值为int32
    fmt.Println(rand.Float32())   // 32位float随机值,返回值为float32
    fmt.Println(rand.Float64())   // 64位float随机值,返回值为float64

    // 如果要产生负数到正数的随机值,只需要将生成的随机数减去相应数值即可
    fmt.Println(rand.Intn(100) - 50) // [-50, 50)的随机值

    //
    // Rand对象
    //
    r := rand.New(rand.NewSource(time.Now().Unix()))

    fmt.Println(r.Int())       // int随机值,返回值为int
    fmt.Println(r.Intn(100))   // [0,100)的随机值,返回值为int
    fmt.Println(r.Int31())     // 31位int随机值,返回值为int32
    fmt.Println(r.Int31n(100)) // [0,100)的随机值,返回值为int32
    fmt.Println(r.Float32())   // 32位float随机值,返回值为float32
    fmt.Println(r.Float64())   // 64位float随机值,返回值为float64

    // 如果要产生负数到正数的随机值,只需要将生成的随机数减去相应数值即可
    fmt.Println(r.Intn(100) - 50) // [-50, 50)的随机值
}
ログイン後にコピー

以上がgolangで非反復乱数を生成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Excelで乱数ジェネレーターを作成する方法 Excelで乱数ジェネレーターを作成する方法 Apr 14, 2023 am 09:46 AM

RANDBETWEEN を使用して Excel で乱数を生成する方法 特定の範囲内の乱数を生成したい場合は、RANDBETWEEN 関数を使用すると手早く簡単に実行できます。これにより、選択した 2 つの値の間でランダムな整数を生成できます。 RANDBETWEEN を使用して Excel で乱数を生成する: 最初の乱数を表示するセルをクリックします。 =RANDBETWEEN(1,500) と入力し、「1」を生成する最小の乱数に置き換え、「500」を次の乱数に置き換えます。

Java乱数生成パフォーマンス最適化手法 Java乱数生成パフォーマンス最適化手法 Jun 30, 2023 pm 12:25 PM

Java 開発で乱数生成のパフォーマンスを最適化する方法 乱数は、コンピューター サイエンス、特に暗号化、シミュレーション、ゲームなどの分野で広く使用されています。 Java 開発では、さまざまなニーズを満たすために乱数を生成する必要があることがよくあります。ただし、乱数生成のパフォーマンスは開発者の懸念事項の 1 つであることがよくあります。この記事では、Java 開発における乱数生成のパフォーマンスを最適化する方法について説明します。 ThreadLocalRandom クラスは、ThreadLocalRandom クラスを使用して Java7 で導入されました。

PHP配列を使用して乱数と検証コードを生成する方法 PHP配列を使用して乱数と検証コードを生成する方法 Jul 16, 2023 am 08:31 AM

PHP 配列を使用して乱数と検証コードを生成する方法 乱数と検証コードは、Web サイトやアプリケーションの開発中に非常に一般的です。 PHP には、乱数と検証コードを生成するためのさまざまな方法が用意されています。この記事では、PHP 配列を使用して乱数と検証コードを生成する方法を、対応するコード例とともに紹介します。 1. 乱数を生成する PHP では、rand() 関数を使用して乱数を生成できます。 rand() 関数には、最小値と最大値の 2 つのパラメータが必要です。サンプルコードは次のとおりです: $min=1;$max=

Go 言語ドキュメントの crypto/rand.Read 関数を使用して乱数を生成する Go 言語ドキュメントの crypto/rand.Read 関数を使用して乱数を生成する Nov 04, 2023 pm 03:39 PM

Go 言語を使用して乱数を生成する Go 言語は、乱数を生成するための組み込みライブラリを多数提供する、最新の簡潔かつ効率的なプログラミング言語です。その中で、crypto/rand パッケージは、安全な乱数を生成するための一連の関数を提供します。この記事では、crypto/rand パッケージの Read 関数を使用して乱数を生成します。まず、crypto/rand パッケージをインポートし、乱数を保存するバイト配列を作成する必要があります。コード例は次のとおりです。

numpy での乱数生成方法とアプリケーションについての深い理解 numpy での乱数生成方法とアプリケーションについての深い理解 Jan 03, 2024 am 08:23 AM

乱数を生成する NumPy の方法と応用を探る はじめに: 乱数は、シミュレーション実験、データ生成、特徴選択など、コンピューター サイエンスや統計で広く使用されています。 Python の NumPy (NumericalPython) ライブラリは、乱数を生成するための多くの関数を提供する強力な数値計算ライブラリです。この記事では、NumPy での乱数生成方法を検討し、具体的なコード例を示します。 1. NumPyが提供するNumPyの乱数生成機能

Java で Random.nextInt() メソッドを使用して乱数を生成するにはどうすればよいですか? Java で Random.nextInt() メソッドを使用して乱数を生成するにはどうすればよいですか? Nov 18, 2023 pm 03:44 PM

Java で Random.nextInt() メソッドを使用して乱数を生成するにはどうすればよいですか?乱数はコンピューター サイエンスで広く使用されており、パスワード、ゲームのランダム イベント、データ サイエンスのランダム サンプリングなどの生成に使用できます。 Java には乱数を生成する Random クラスが用意されており、nextInt() メソッドを使用してランダムな整数を生成できます。以下では、Random.nextInt() メソッドを使用して乱数を生成する方法と、具体的なコード例を紹介します。まず必要なのは、

Golang で重複した乱数の生成を回避するにはどうすればよいですか? Golang で重複した乱数の生成を回避するにはどうすればよいですか? Jun 01, 2024 pm 04:46 PM

Golang で重複した乱数の生成を回避する方法: 新しい乱数ジェネレーター rand.New(rand.Source) を作成します。 rand.NewSource(time.Now().UnixNano()) をエントロピー ソースとして使用します。 rand.Intn(n) を使用してランダムな整数を生成します。

Java の Math.random() 関数を使用して乱数を生成する Java の Math.random() 関数を使用して乱数を生成する Jul 24, 2023 am 08:45 AM

Java の Math.random() 関数を使用して乱数を生成する 乱数はコンピュータ プログラミングにおいて非常に一般的な概念であり、ランダムなパスワードの生成、宝くじの抽選、ゲームのランダム イベントなど、さまざまな関数の実装に役立ちます。 Java では、Math.random() 関数を使用して乱数を生成できます。 Math.random() 関数は Java 標準ライブラリの静的メソッドで、0 以上 1 未満のランダムな double 型の数値を返します。合格

See all articles