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

138
Visualizações
F# System.Valores duplicados aleatorios

Estoy tratando de usar System.Random en F # pero sigo obteniendo valores duplicados. Soy consciente de que si creo una nueva instancia de System.Random cada vez que lo hago. A continuación, podría obtener valores duplicados. Lo que estoy tratando de lograr es establecer una identificación aleatoria en cada registro al crearlos. Aquí hay un ejemplo del problema en el código:

 [<AutoOpen>] module Domain = type Test = {id: int; ....} module Test = let r = System.Random() let t create = {id = r.Next(); ....} let a = Test.create let b = Test.create

En el código anterior, bot a y b obtienen la misma identificación.

Lo que supongo que está sucediendo es que let r = System.Random() no se trata como una variable sino como una función que devuelve una nueva instancia de Random. ¿Es esto correcto? ¿Y cómo puedo solucionar este problema?

¡Gracias!

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

0

Debe pasar una unidad () en su función de creación; de lo contrario, es un valor (que solo se calcula la primera vez).

 open System module T = type Test = {id: int; } let r = System.Random() let create () = {id = r.Next(); } [<EntryPoint>] let main _ = let a = T.create () let b = T.create () printfn "a = %A" a printfn "b = %A" b

Esto produce diferentes valores.

 a = { id = 1528807395 } b = { id = 1526175776 }

Esto resuelve su problema inmediato. Sin embargo, es una práctica común crear funciones sin estado. Su variable aleatoria contiene estado, por lo que debe pasarse como parámetro.

 let create (r:Random) = {id = r.Next(); }
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