Usuário com melhor resposta
Como não repetir um número aleatório?

Pergunta
-
Eu preciso criar um programa que ao clicar em um botão ele gera um número aleatório que é armazenado em uma matriz. Então quando eu clicar de novo ele gera um número diferente e se ele for diferente, ele é somado com o outro e assim até quando eu quiser.segunda-feira, 10 de março de 2014 21:53
Respostas
-
Gustavo, bom dia.
Seguinte você cria o algorítimo que vai gerar esses números, depois que gerou você guarda esse valor gerado em uma List, na próxima vez que rodar o For você pega esse novo número gerado e verifica se ele já existe na List que contém todos os números que já foram somados. Com isso, você evita que números iguais sejam somados no Random.
Se a resposta foi útil por favor qualifique. Italo Biguzi Duarte, Desenvolvedor ASP.NET C#, Italo.biguzzi@gmail.com
- Sugerido como Resposta Rafa sibeira sexta-feira, 14 de março de 2014 15:41
- Marcado como Resposta Giovani Cr sexta-feira, 14 de março de 2014 19:43
terça-feira, 11 de março de 2014 09:38 -
Boa noite Gustavo_SP
Você não quer que nenhum numero se repita é isso?
Bom se for, manda o botão sortear o numero, e em seguida tenta usar um FOR na matriz, verificando se o numero sorteado não é igual a um já presente nela. Se for, você manda ele sortear novamente, caso contrário o programa continua.
- Marcado como Resposta Giovani Cr sexta-feira, 14 de março de 2014 19:43
segunda-feira, 10 de março de 2014 22:40 -
Eu preciso criar um programa que ao clicar em um botão ele gera um número aleatório que é armazenado em uma matriz. Então quando eu clicar de novo ele gera um número diferente e se ele for diferente, ele é somado com o outro e assim até quando eu quiser.
Não existe um algorítimo que retorne um número aleatório sem a possibilidade de repeti-lo.
O que existe e é factível é você criar uma rotina que retorne uma lista com os números, entre um intervalo, selecionados de forma aleatória. Ou seja você informa um valor mínimo e um valor máximo e ele irá retornar uma lista com todos os números deste intervalo organizados de forma aleatória.
Segue uma implementação:
Public Function UniqueRandomGenerator(minVal As Integer, maxVal As Integer) As List(Of Integer) Dim rand As New Random() Dim uniqueList As New SortedList(Of Integer, Integer)() For i As Integer = minVal To maxVal uniqueList.Add(rand.[Next](), i) Next Return uniqueList.Values.ToList() End Function
Você deverá gerar a lista na inicialização do programa e depois ir pegando número por número da lista conforme for necessário
Fonte: generate random numbers with no repeat in c# - Stack Overflow
Herbert Lausmann
- Sugerido como Resposta SammuelMiranda terça-feira, 11 de março de 2014 15:58
- Marcado como Resposta Giovani Cr sexta-feira, 14 de março de 2014 19:43
segunda-feira, 10 de março de 2014 22:43 -
Boa tarde Gustavo,
Caso alguma sugestão resolva o seu problema não esqueça de marcar como resposta para fechar a sua Thread.
Att,
Giovani Cruzara – Microsoft Contingent Staff
Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.
Msdn Community Support
Por favor, lembre-se de “Marcar como Resposta” as respostas que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.- Marcado como Resposta Giovani Cr sexta-feira, 14 de março de 2014 19:43
quarta-feira, 12 de março de 2014 19:36
Todas as Respostas
-
Boa noite Gustavo_SP
Você não quer que nenhum numero se repita é isso?
Bom se for, manda o botão sortear o numero, e em seguida tenta usar um FOR na matriz, verificando se o numero sorteado não é igual a um já presente nela. Se for, você manda ele sortear novamente, caso contrário o programa continua.
- Marcado como Resposta Giovani Cr sexta-feira, 14 de março de 2014 19:43
segunda-feira, 10 de março de 2014 22:40 -
Eu preciso criar um programa que ao clicar em um botão ele gera um número aleatório que é armazenado em uma matriz. Então quando eu clicar de novo ele gera um número diferente e se ele for diferente, ele é somado com o outro e assim até quando eu quiser.
Não existe um algorítimo que retorne um número aleatório sem a possibilidade de repeti-lo.
O que existe e é factível é você criar uma rotina que retorne uma lista com os números, entre um intervalo, selecionados de forma aleatória. Ou seja você informa um valor mínimo e um valor máximo e ele irá retornar uma lista com todos os números deste intervalo organizados de forma aleatória.
Segue uma implementação:
Public Function UniqueRandomGenerator(minVal As Integer, maxVal As Integer) As List(Of Integer) Dim rand As New Random() Dim uniqueList As New SortedList(Of Integer, Integer)() For i As Integer = minVal To maxVal uniqueList.Add(rand.[Next](), i) Next Return uniqueList.Values.ToList() End Function
Você deverá gerar a lista na inicialização do programa e depois ir pegando número por número da lista conforme for necessário
Fonte: generate random numbers with no repeat in c# - Stack Overflow
Herbert Lausmann
- Sugerido como Resposta SammuelMiranda terça-feira, 11 de março de 2014 15:58
- Marcado como Resposta Giovani Cr sexta-feira, 14 de março de 2014 19:43
segunda-feira, 10 de março de 2014 22:43 -
Gustavo, bom dia.
Seguinte você cria o algorítimo que vai gerar esses números, depois que gerou você guarda esse valor gerado em uma List, na próxima vez que rodar o For você pega esse novo número gerado e verifica se ele já existe na List que contém todos os números que já foram somados. Com isso, você evita que números iguais sejam somados no Random.
Se a resposta foi útil por favor qualifique. Italo Biguzi Duarte, Desenvolvedor ASP.NET C#, Italo.biguzzi@gmail.com
- Sugerido como Resposta Rafa sibeira sexta-feira, 14 de março de 2014 15:41
- Marcado como Resposta Giovani Cr sexta-feira, 14 de março de 2014 19:43
terça-feira, 11 de março de 2014 09:38 -
Boa tarde Gustavo,
Caso alguma sugestão resolva o seu problema não esqueça de marcar como resposta para fechar a sua Thread.
Att,
Giovani Cruzara – Microsoft Contingent Staff
Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.
Msdn Community Support
Por favor, lembre-se de “Marcar como Resposta” as respostas que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.- Marcado como Resposta Giovani Cr sexta-feira, 14 de março de 2014 19:43
quarta-feira, 12 de março de 2014 19:36