É melhor ler /dev/urandomcom a Fileclasse se quiser números aleatórios criptograficamente fortes.
Torre
Que tal números aleatórios negativos (duplos)? Eu estou tentando implementar um método randomRange que geraria por exemplo, de -0.8 para 0.9 ... o resultado seria, por exemplo, -0.32
just_a_dude
2
@just_a_dude que soa como uma pergunta perfeita para o stackoverflow. Considere a criação de uma nova pergunta :)
Seth Ladd
1
O método que geraria, por exemplo, de -0,8 a 0,9 é simples. Você só precisa mapear valores. Seu alcance é 0,8 + 0,9 = 1,7. Portanto, se você colocar rng.nextInt (1700), obterá um número entre 0 e 1700. Divida por 100 e reduza -0,8. Significado yourRnd = rng.nextInt (1700) / 100.0-0.8. Há mais opções que você pode usar como nem mesmo usando nextInt mas sim duplo 0-1, miltiplied por 1,7 e mudou -0.8
Veljac
26
Você pode alcançá-lo através do Randomobjeto de classe random.nextInt(max), que está na dart:mathbiblioteca. O nextInt()método requer um limite máximo. O número aleatório começa 0e o próprio limite máximo é exclusivo.
import'dart:math';Random random =newRandom();int randomNumber = random.nextInt(100);// from 0 upto 99 included
Se você deseja adicionar o limite mínimo, adicione o limite mínimo ao resultado
int randomNumber = random.nextInt(90)+10;// from 10 upto 99 included
sua resposta não inclui números de 10 a 109 incluídos?
Tim
@ Tim obrigado por perceber, eu tinha acabado de copiar o código da linha anterior. Resolveu isso.
Samir Rahimy
17
Se você precisar de números aleatórios criptograficamente seguros (por exemplo, para criptografia) e estiver em um navegador, poderá usar a API de criptografia DOM :
int random(){final ary =newInt32Array(1);
window.crypto.getRandomValues(ary);return ary[0];}
Isso funciona no Dartium, Chrome e Firefox, mas provavelmente não em outros navegadores, pois é uma API experimental.
Uma API aleatória segura foi adicionada a dart:math
newRandom.secure()
dart:mathRandomadicionou um secureconstrutor retornando um gerador aleatório criptograficamente seguro que lê da fonte de entropia fornecida pelo incorporador para cada valor aleatório gerado.
que delega window.crypto.getRandomValues()no navegador e no sistema operacional (como urandomno servidor)
Essa nova API está disponível em 1.14-dev ou superior.
Seth Ladd
7
Não pude comentar porque acabei de criar esta conta, mas queria ressaltar que a solução do @ eggrobot78 funciona, mas é exclusiva no dardo, portanto não inclui o último número. Se você alterar a última linha para "r = min + rnd.nextInt (max - min + 1);", também deverá incluir o último número.
Explicação:
max =5;
min =3;Random rnd =newRandom();
r = min + rnd.nextInt(max - min);//max - min is 2//nextInt is exclusive so nextInt will return 0 through 1//3 is added so the line will give a number between 3 and 4//if you add the "+ 1" then it will return a number between 3 and 5
Uma solução alternativa pode estar usando o seguinte código DRandom . Esta classe deve ser usada com uma semente. Ele fornece uma interface familiar para o que você esperaria no .NET; foi transportado do Random.cs da mono. Este código pode não ser seguro para criptografia e não foi testado estatisticamente.
Acabei de escrever esta pequena turma para gerar números aleatórios normais ... foi um ponto de partida decente para a verificação que eu preciso fazer. (Esses conjuntos serão distribuídos em uma curva em forma de "sino".) A semente será definida aleatoriamente, mas se você quiser gerar novamente um conjunto, poderá passar apenas algumas sementes específicas e o mesmo conjunto será gerado.
Depois, você pode usá-lo assim para verificar a média de conjuntos de 1000 nums gerados entre um limite baixo e alto. Os valores são armazenados na classe para que possam ser acessados após a instanciação.
Deixe-me resolver esta questão com um exemplo prático na forma de um aplicativo simples de rolagem de dados que chama 1 de 6 imagens de dados aleatoriamente para a tela quando tocada.
primeiro declare uma variável que gera números aleatórios (não esqueça de importar dart.math). Em seguida, declare uma variável que analisa o número aleatório inicial dentro de restrições entre 1 e 6 como um número inteiro.
As duas variáveis são privadas estáticas para serem inicializadas uma vez. Isso não é muito importante, mas seria uma boa prática se você tivesse que inicializar um monte de números aleatórios.
Um novo número aleatório é gerado cada vez que você toca na tela e esse número é referenciado para selecionar qual imagem de face de dados é escolhida.
Respostas:
Use a
Random
classe dedart:math
:Este código foi testado com a Dart VM e o dart2js, no momento em que este artigo foi escrito.
fonte
/dev/urandom
com aFile
classe se quiser números aleatórios criptograficamente fortes.Você pode alcançá-lo através do
Random
objeto de classerandom.nextInt(max)
, que está nadart:math
biblioteca. OnextInt()
método requer um limite máximo. O número aleatório começa0
e o próprio limite máximo é exclusivo.Se você deseja adicionar o limite mínimo, adicione o limite mínimo ao resultado
fonte
Se você precisar de números aleatórios criptograficamente seguros (por exemplo, para criptografia) e estiver em um navegador, poderá usar a API de criptografia DOM :
Isso funciona no Dartium, Chrome e Firefox, mas provavelmente não em outros navegadores, pois é uma API experimental.
fonte
Aqui está um trecho para gerar uma lista de números aleatórios
Isso irá gerar uma lista de 12 números inteiros de 0 a 99 (inclusive).
fonte
Uma API aleatória segura foi adicionada a
dart:math
que delega
window.crypto.getRandomValues()
no navegador e no sistema operacional (comourandom
no servidor)fonte
Não pude comentar porque acabei de criar esta conta, mas queria ressaltar que a solução do @ eggrobot78 funciona, mas é exclusiva no dardo, portanto não inclui o último número. Se você alterar a última linha para "r = min + rnd.nextInt (max - min + 1);", também deverá incluir o último número.
Explicação:
fonte
tente isso, você pode controlar o valor mínimo / máximo:
fonte
Uma solução alternativa pode estar usando o seguinte código DRandom . Esta classe deve ser usada com uma semente. Ele fornece uma interface familiar para o que você esperaria no .NET; foi transportado do Random.cs da mono. Este código pode não ser seguro para criptografia e não foi testado estatisticamente.
fonte
Acabei de escrever esta pequena turma para gerar números aleatórios normais ... foi um ponto de partida decente para a verificação que eu preciso fazer. (Esses conjuntos serão distribuídos em uma curva em forma de "sino".) A semente será definida aleatoriamente, mas se você quiser gerar novamente um conjunto, poderá passar apenas algumas sementes específicas e o mesmo conjunto será gerado.
Diverta-se...
Depois, você pode usá-lo assim para verificar a média de conjuntos de 1000 nums gerados entre um limite baixo e alto. Os valores são armazenados na classe para que possam ser acessados após a instanciação.
_swarmii
fonte
use esta biblioteca http://dart.googlecode.com/svn/branches/bleeding_edge/dart/lib/math/random.dart forneceu um bom gerador aleatório que eu acho que será incluído no sdk em breve espero que ajude
fonte
Para mim, a maneira mais fácil é:
Graças à explicação do @ adam-singer aqui.
fonte
funcionou para mim
new Random().nextInt(100); // MAX = number
dará 0 a 99 num número aleatório
Exemplo ::
fonte
Deixe-me resolver esta questão com um exemplo prático na forma de um aplicativo simples de rolagem de dados que chama 1 de 6 imagens de dados aleatoriamente para a tela quando tocada.
primeiro declare uma variável que gera números aleatórios (não esqueça de importar dart.math). Em seguida, declare uma variável que analisa o número aleatório inicial dentro de restrições entre 1 e 6 como um número inteiro.
As duas variáveis são privadas estáticas para serem inicializadas uma vez. Isso não é muito importante, mas seria uma boa prática se você tivesse que inicializar um monte de números aleatórios.
Agora, crie um widget de detecção de gestos com um ClipRRect quando criança para retornar uma das seis imagens de dados para a tela quando tocada.
Um novo número aleatório é gerado cada vez que você toca na tela e esse número é referenciado para selecionar qual imagem de face de dados é escolhida.
Eu esperava que este exemplo ajudasse :)
Dados rolando aplicativo usando números aleatórios no dardo
fonte