Espaços nominais
Variantes
Acções

std::seed_seq::generate

Da cppreference.com
< cpp‎ | numeric‎ | random‎ | seed seq

 
 
Biblioteca numéricos
Funções matemáticas comuns
De ponto flutuante ambiente
Números complexos
Matrizes numéricas
Pseudo-aleatório de geração de números
Tempo de compilação aritmética racional (C++11)
Genéricos operações numéricas
Original:
Generic numeric operations
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
(C++11)
 
Pseudo-aleatório de geração de números
Motores e adaptadores de motor
Original:
Engines and engine adaptors
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Geradores
Original:
Generators
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Distribuições
Original:
Distributions
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Distribuições uniformes
Original:
Uniform distributions
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Distribuições de Bernoulli
Original:
Bernoulli distributions
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Distribuições de Poisson
Original:
Poisson distributions
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Distribuições normais
Original:
Normal distributions
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Distribuições de amostragem
Original:
Sampling distributions
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Seqüências de sementes
Original:
Seed Sequences
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
(C++11)
C biblioteca
Original:
C library
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
 
std::seed_seq
Funções de membro
Original:
Member functions
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
seed_seq::seed_seq
seed_seq::generate
seed_seq::size
seed_seq::param
 
template< class RandomIt >
void generate( RandomIt begin, RandomIt end );
(desde C++11)
Preenche a [begin, end) faixa com valores inteiros sem sinal i, 0 ≤ i < 232
, com base nos dados originalmente fornecidos no construtor desta seed_seq. Os valores produzidos são distribuídos ao longo da gama de 32-bit inteiro, mesmo que os valores iniciais foram fortemente inclinado.
Original:
Fills the range [begin, end) with unsigned integer values i, 0 ≤ i < 232
, based on the data originally provided in the constructor of this seed_seq. The produced values are distributed over the entire 32-bit range even if the initial values were strongly biased.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
O seguinte algoritmo é utilizado (adaptado a partir da seqüência de inicialização do Mersenne Twister gerador por Makoto Matsumoto and Takuji Nishimura, incorporando as melhorias feitas pela Mutsuo Saito in 2007)
Original:
The following algorithm is used (adapted from the initialization sequence of the Mersenne Twister generator by Makoto Matsumoto and Takuji Nishimura, incorporating the improvements made by Mutsuo Saito in 2007)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
  • Se begin == end, não faça nada. Caso contrário,
    Original:
    If begin == end, do nothing. Otherwise,
    The text has been machine-translated via Google Translate.
    You can help to correct and verify the translation. Click here for instructions.
  • Em primeiro lugar, definir cada elemento da faixa de saída para o valor 0x8b8b8b8b
    Original:
    First, set each element of the output range to the value 0x8b8b8b8b
    The text has been machine-translated via Google Translate.
    You can help to correct and verify the translation. Click here for instructions.
  • Transformar os elementos da gama de saída de acordo com o seguinte algoritmo:
    Original:
    Transform the elements of the output range according to the following algorithm:
    The text has been machine-translated via Google Translate.
    You can help to correct and verify the translation. Click here for instructions.

For k = 0,..., m-1

onde m=max(s+1, n)
Original:
where m=max(s+1, n)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

and n=begin-end
and s=v.size()

e v é o recipiente privado mantendo os valores originalmente previstos pelo construtor deste objeto seed_seq
Original:
and v is the private container holding the values originally provided by the constructor of this seed_seq object,
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
  1. begin[k+p] += r1
  2. begin[k+q] += r2
  3. begin[k] = r2,
onde p=(n-t)/2
Original:
where p=(n-t)/2
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

and q=p+t
and t=(n >= 623) ? 11 : (n >= 68) ? 7 : (n >= 39) ? 5 : (n >= 7) ? 3 : (n - 1) / 2
and r1=1664525 * T(begin[k]^begin[k+p]^begin[k−1])
and T(x) = x ^ (x << 27)
and r2=r1+s if k==0, r2=r1 + k%n + v[k-1] if 0<k<=s, r2=r1 + k%n if k>s.

For k = m,..., m+n-1,

  1. begin[k+p] ^= r3
  2. begin[k+q] ^= r4
  3. begin[k]=r4
onde r3 = 1566083941 * T(begin[k]+begin[k+p]+begin[k-1])
Original:
where r3 = 1566083941 * T(begin[k]+begin[k+p]+begin[k-1])
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

and r4=r3 - k%n

onde todos os cálculos são executados modulo 232
e onde a indexação do intervalo de saída (begin[x]) é tomado modulo n.
Original:
where all calculations are performed modulo 232
and where the indexing of the output range (begin[x]) is taken modulo n.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

[editar] Parâmetros

begin, end -
mutáveis ​​de acesso aleatório iteradores cujos std::iterator_traits<>::value_type é um tipo inteiro sem sinal adequado para o armazenamento de valores de 32 bits
Original:
mutable random-access iterators whose std::iterator_traits<>::value_type is an unsigned integer type suitable for storing 32-bit values
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Type requirements
-
RandomIt must meet the requirements of RandomAccessIterator.

[editar] Valor de retorno

nenhum, os resultados são escritos no intervalo [begin, end).
Original:
none, the results are written to the [begin, end) range.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

[editar] Exemplo

#include <random>
#include <iostream>
 
int main()
{
    std::seed_seq seq({1,2,3,4,5});
    std::vector<std::uint32_t> seeds(10);
    seq.generate(seeds.begin(), seeds.end());
// Step 1: fill with 0x8b8b8b8b
// seeds = {2341178251, 2341178251, 2341178251, 2341178251, 2341178251,
//          2341178251, 2341178251, 2341178251, 2341178251, 2341178251 }
//
// Step 2: 
// n = 10, s = 5, t = 3, p = 3, q = 6, m = 10
//
// First iteration, k = 0; r1 = 1371501266, r2 = 1371501271
//
// seeds = {1371501271, 2341178251, 2341178251, 3712679517, 2341178251,
//          2341178251, 3712679522, 2341178251, 2341178251, 2341178251 }
//
// Iterations from k = 1 to k = 5 (r2 = r1 + k%n + v[k-1])
//
// r1 = 2786190137, 3204727651, 4173325571, 1979226628, 401983366
// r2 = 2786190139, 3204727655, 4173325577, 1979226636, 401983376
//
// seeds = {3350727907, 3188173515, 3204727655, 4173325577, 1979226636,
//           401983376, 3591037797, 2811627722, 1652921976, 2219536532 } 
//
// Iterations from k = 6 to k = 9 (r2 = r1 + k%n)
//
// r1 = 2718637909, 1378394210, 2297813071, 1608643617
// r2 = 2718637915, 1378394217, 2297813079, 1608643626
//
// seeds = { 434154821, 1191019290, 3237041891, 1256752498, 4277039715,
//          2010627002, 2718637915, 1378394217, 2297813079, 1608643626 } 
//
// Step 3
// iterations from k = 10 to k = 19, using ^= to modify the output
//
// r1 = 1615303485, 3210438310, 893477041, 2884072672, 1918321961,
// r2 = 1615303485, 3210438309, 893477039, 2884072669, 1918321957
//
// seeds = { 303093272, 3210438309,  893477039, 2884072669, 1918321957,
//          1117182731, 1772877958, 2669970405, 3182737656, 4094066935 }
//
// r1 =  423054846, 46783064, 3904109085, 1534123446, 1495905687
// r2 =  423054841, 46783058, 3904109078, 1534123438, 1495905678
//
// seeds = { 4204997637, 4246533866, 1856049002, 1129615051, 690460811,
//           1075771511,   46783058, 3904109078, 1534123438, 1495905678 }
 
    for(std::uint32_t n : seeds)
        std::cout << n << '\n';
}

Saída:

4204997637
4246533866
1856049002
1129615051
690460811
1075771511
46783058
3904109078
1534123438
1495905678