eu ja vi algumas maneiras de fazer uma ordem aleatória, mas qual é a melhor, a mais eficiente?
Qual é a melhor maneira de fazer uma ordem aleatória?
11 Respostas
Contrate a corretora de valores de sua preferência e peça a ela fazer uma ordem de compra ou venda aleatória. Por exemplo, pode pedir uma ordem “a qualquer preço” - então ela será executada pelo preço que estiver disponível no livro de ofertas.
Ordem do que?
Números, strings, métodos, etc…
Dá um exemplo da uma ordem aleatória.
Ainda não entendi o que você quer.
Se você quer fazer um embaralhamento é muito fácil.
Um algoritmo O(n) (complexidade linear) seria:
Pegue um array, itere por ele inteiro, sorteando uma posicao aleatória de 0 a tamanho - 1 a cada iteração.
Troque o valor da posição atual pela posição sorteada.
Ao final da iteração você terá um array embaralhado.
mas e por exemplo, ele escolher um número aleatoriamente de 1 a 10
Math.random();
essa função gera um numero aleatório de tipo double entre 0 e 1.
Se você quiser fazer isso para um intervalo [a-b] aplicando alguns conhecimentos de matemática fundamental tem-se:
a+(b-a)*Math.random();
lembrando que essa função retorna valores do tipo double e se você quiser que sejam inteiros terá de fazer cast para int
Dai é só aplicar alguma lógica para poder ter o resto… por exemplo se quiser números entre 0 e 10 é so multiplicar a função por 10 , se quiser ter caracteres aleatórios é só fazer o cast para char e garantir que o intervalo seja 0-255 e com base nisso montar uma String, etc
Tente da próxima vez formular melhor as questões
Boa Sorte!
Uma coisa que me irrita profundamente é que todo mundo não quer só uma solução para um problema que mal sabe descrever; quer sempre a melhor e nem tem a menor idéia em que condições ela tem de ser a melhor.
Pois é… Só respondi para ver até onde ia. O pior é quando “já viram diversas maneiras” e não entendem a mais simples.
Leia este artigo para entender as possibilidades.
//sorteia um numero de 0 a 99
import java.util.Random;
public class numeroAleatorio {
public static void main(String[] args) {
Random numero = new Random();
int n = numero.nextInt(100);
}
}
Quando você fala em números aleatórios, você deve sempre pensar em vários fatores:
- Qualidade dos números gerados, ou seja, a probabilidade de uma mesma sequencia de números ser gerada ao longo do tempo (se serão criptograficamente fortes ou não);
- Velocidade do algoritmo: As vezes é importante gerar muitos números rapidamente.
- Memória ocupada pelo gerador;
- Tipo de distribuição que se quer obter: Se será discreta (com números inteiros) ou contínua (boolean). Se os números sorteados podem ou não se repetir. Se devem obedecer algum tipo de distribuição.
Por isso perguntar “qual a melhor maneira de gerar números aleatórios” é uma pergunta um tanto subjetiva, a menos que você explique detalhadamente para que quer esses números.
A documentação da boost tem um bom resumo de vários geradores, com links para artigos que os explicam:
http://www.boost.org/doc/libs/1_52_0/doc/html/boost_random/reference.html#boost_random.reference.generators
E no gamasutra há uma boa matéria explicando como a estatística pode ser usada para controlar números aleatórios em games: