No presente documento , que as preocupações do comando "set semente", Stata pessoas discutem questões relacionadas com a definição de sementes ao gerar números pseudo-aleatórios.
Um notável "não" é "não use em série a sequência de números naturais como sementes, porque isso tem um padrão e põe em risco a pseudo-aleatoriedade".
Um "fazer" de apenas um quarto e de brincadeira é definir apenas uma semente durante sua vida útil e depois registrar o "estado" do processo gerado no final de cada experimento, para que o próximo experimento continue no ponto onde o processo parou.
Obviamente, o conselho acima depende da contagem esperada de números pseudo-aleatórios que um irá gerar em sua vida útil de pesquisa. Talvez um twister de Mersenne cubra as necessidades da vida de muitos pesquisadores ...
Agora, como não tenho muita experiência com PRNGs, na teoria ou na prática, não posso argumentar sobre essas sugestões - elas devem ser comprovadamente válidas ou inválidas por razões teóricas e estatísticas matemáticas difíceis.
Então, minhas perguntas são
1) Você pode ajudar a explicar ou invalidar os conselhos fornecidos acima, ou apontar para uma referência que lida com esses problemas?
2) Você pode fornecer referências que ofereçam "melhores práticas" na definição de sementes?
3) Como você faz isso em seu próprio trabalho e por quê?
Como exemplo para a pergunta 3), suponha que, para um estudo de Monte Carlo, você queira gerar amostras cada uma com tamanho , e que seu tenha um período suficientemente maior que . Você geraria todos os números pseudo-aleatórios com uma semente ou você tem o hábito de mudar as sementes, por exemplo, por amostra? (mas isso é apenas para ilustração - acredito que respostas mais gerais valem a pena aqui).
Um encadeamento relacionado (embora muito mais focado) é
Definir semente antes de cada bloco de código ou uma vez por projeto?
Eu tenho a sensação de que talvez isso deva ser um wiki da comunidade, os mods decidem sobre isso.
fonte
Respostas:
Pelo que vale, isso se baseia na experiência e não na análise matemática:
Eu acho que, a menos que você esteja fazendo criptografia, onde padrões sutis podem ser muito ruins, qual semente você define não faz diferença, desde que você use bons PRNGs aceitos como Mersenne Twister e não antigos como geradores congruenciais lineares. Tanto quanto eu sei, não há nenhuma maneira que você pode dizer o número aleatório vai sair de uma determinada semente sem realmente executar o PRNG (assumindo que é um decente), caso contrário, você teria apenas que tomar esse novo algoritmo eo uso que como seu gerador de números aleatórios.
Outra perspectiva: você acha que quaisquer padrões sutis em sua simulação de Monte-Carlo provavelmente têm uma magnitude maior do que todos os erros, confusões e erros de medição introduzidos por outras suposições de modelagem?
Eu usaria apenas uma semente aleatória no início para reprodutibilidade, e não a definiria antes de cada chamada, a menos que esteja fazendo depuração, onde preciso garantir que dois algoritmos diferentes produzam o mesmo resultado para os mesmos dados de entrada.
Isenção de responsabilidade: se você simular reatores nucleares, sistemas de controle de mísseis ou previsão do tempo, é melhor consultar especialistas em domínio, não me responsabilizo nesse caso.
fonte