Qual é a melhor maneira de fazer uma ordem aleatória?

11 respostas
P

eu ja vi algumas maneiras de fazer uma ordem aleatória, mas qual é a melhor, a mais eficiente?

11 Respostas

E

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.

davidbuzatto

Ordem do que?

P

Números, strings, métodos, etc…

davidbuzatto

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.

P

mas e por exemplo, ele escolher um número aleatoriamente de 1 a 10

ruben_m
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!

E

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.

davidbuzatto

Pois é… Só respondi para ver até onde ia. O pior é quando “já viram diversas maneiras” e não entendem a mais simples.

sergiotaborda

Leia este artigo para entender as possibilidades.

carlinbh
//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);       
   
     }

}
ViniGodoy

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:



Criado 3 de janeiro de 2013
Ultima resposta 7 de jan. de 2013
Respostas 11
Participantes 7