Pergunta

Estou fazendo alguns testes na classe Random e usei o seguinte código:

while (x++ <= 5000000)
{
    y = rnd.Next(1, 5000000);
    if (!data.Contains(y))
        data.Add(y);
    else
    {
        Console.WriteLine("Cycle {2}: Repetation found for number {0} after {1} iteration", y, x, i);
        break;
    }
}

Continuei alterando o limite máximo do rnd (ou seja,5000000) e alterei o número de iterações e obtive o seguinte resultado:

1) if y = rnd.Next(1, 5000) : The average is between 80 to 110 iterations
2) if y = rnd.Next(1, 5000000) : The average is between 2000 to 4000 iterations
3) if y = rnd.Next(1, int.MaxValue) : The average is between 40,000 to 80,000 iterations.

Por que estou obtendo essas médias, ou seja,das 10 vezes que verifiquei cada valor, 80% das vezes fico dentro dessa faixa média.Eu não acho que podemos chamar isso de aleatório.

O que posso fazer para obter um número bastante aleatório.

Foi útil?

Solução

Finalmente, encontrei a resposta.O problema é que, se eu enviar o arquivo para documentos, ele requer um método copy.copyintoitems e adicionar anexo não é possível.

Outras dicas

Você está assumindo que a aleatoriedade é melhor se os números não forem repetidos.Isso não é verdade.

A verdadeira aleatoriedade não tem memória.Quando você escolhe o próximo número, a chance de obter o mesmo número novamente é tão alta quanto qualquer outro número do intervalo.

Se você lançar um dado e obtiver um seis e depois lançar os dados novamente, não há menos chance de obter um seis novamente.Se acontecer de você conseguir dois seis seguidos, isso não significa que os dados estão quebrados.

A aleatoriedade na classe Random obviamente não é perfeita, mas não é isso que seu teste revela.Ele simplesmente mostra um fenômeno que você obtém com cada gerador de números aleatórios, mesmo que na verdade crie números aleatórios reais e não apenas números pseudo-aleatórios.

Você está julgando a aleatoriedade por pares repetidos, o que não é o melhor teste para a aleatoriedade. As repetições que você vê são semelhantes ao paradoxo de aniversário: http://en.wikipedia.org/wiki/birthday_problem, onde um evento repetido pode ocorrer com um pequeno tamanho de amostra, se você não estiver procurando por um evento específico.

O erro indica que ele não gosta do URL (caminho absoluto) para o arquivo de configuração Ratha do que o arquivo de configuração em si!Verifique se o arquivo (config) em 14hive tem a permissão correta!

Como você está chamando esse arquivo?

Para mim, eu teria os valores armazenados em uma lista ou em uma tabela SQL que teria uma coluna para verificar contra!Pode conter um bool simples Sim para estar aqui antes e não para novo usuário!

Quando o uso logs nele verifica a tabela da lista ou SQL, dependendo do valor será determinado que eles vêem uma introdução ou não!

Para mim eu iria com o SQL e um procedimento armazenado personalizado retornando verdadeiro ou falso da coluna, é mais rápido e não esse tributário sobre recursos!

Simples e fácil;) .... Tenho certeza de que existem outras maneiras como através do anúncio (Active Directory) Verifique o sinalizador se "Alterar senha no próximo logon" é marcado.Se marcado, mostre a introdução se não estiver marcada do que não;)

lá você vai três maneiras!Eu ainda iria com o SQL, mas o anúncio é um bom candidato (não é necessário adicionar um valor extra / tabela / coluna) e nenhuma chamada para DB, mas é mais fácil de desenvolver!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top