Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

398
Visualizações
¿C# tiene algo equivalente a Pythons random.choices()?

Estoy tratando de hacer elecciones basadas en su peso/probabilidad

esto es lo que tenía en python:

 import random myChoiceList = ["Attack", "Heal", "Amplify", "Defense"] myWeights = [70, 0, 15, 15] // % probability = 100% Ex. Attack has 70% of selection print(random.choices(myChoicelist , weights = myWeights, k = 1))

Quiero hacer lo mismo en C#, ¿cómo se hace eso? ¿C# tiene algún método similar a random.choices() todo lo que sé es random.Next()

*este código de python funciona bien randome.choice toma (secuencia, pesos, k) secuencia: valores, pesos: una lista donde puede sopesar la posibilidad de cada valor, k: la longitud de la lista devuelta,

Estoy buscando hacer lo mismo para C #, elija valores según la probabilidad

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

No hay nada integrado en C# como este, sin embargo, no es tan difícil agregar un método de extensión para recrear el mismo comportamiento básico:

 static class RandomUtils { public static string Choice(this Random rnd, IEnumerable<string> choices, IEnumerable<int> weights) { var cumulativeWeight = new List<int>(); int last = 0; foreach (var cur in weights) { last += cur; cumulativeWeight.Add(last); } int choice = rnd.Next(last); int i = 0; foreach (var cur in choices) { if (choice < cumulativeWeight[i]) { return cur; } i++; } return null; } }

Luego puede llamarlo de manera similar a la versión de Python:

 string[] choices = { "Attack", "Heal", "Amplify", "Defense" }; int[] weights = { 70, 0, 15, 15 }; Random rnd = new Random(); Console.WriteLine(rnd.Choice(choices, weights));
over 4 years ago · Santiago Trujillo Relatório

0

puede obtener random.next (0,100), luego elegir el elemento relevante con un simple interruptor o algo así. sus dominios serán así, [0-70, 70-85, 85-100]. déjame saber si necesitas el código completo.

 Random ran = new Random(); int probability = ran.Next(0, 100); string s; if (probability == 0) s = "Heal"; else if (probability <= 70) s = "Attack"; else if (probability <= 85) s = "Amplify"; else if (probability <= 100) s = "Defense";
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda