Randomize Value in a Field
Is there a way to randomize the value that will appear in a field. For example, if I want MSH 3:2 to be either "SAD", "MED", "TEN", "BOB", "RAN", how do I code the DTL to just randomly assign a value?
Comments
$Piece("SAD,MED,TEN,BOB,RAN",",",$r(4)+1)
It's not a bad idea, but the last value has very little chance of appearing
FOR I=1:1:100 {W $Piece("SAD,MED,TEN,BOB,RAN",",",$r(4)+1),"-" }
TEN-TEN-BOB-TEN-SAD-MED-MED-MED-MED-MED-TEN-MED-BOB-MED-MED-TEN-TEN-MED-SAD-BOB-MED-SAD-BOB-
TEN-TEN-BOB-BOB-SAD-BOB-TEN-MED-BOB-BOB-MED-TEN-MED-SAD-BOB-BOB-BOB-MED-MED-TEN-MED-TEN-MED-
TEN-BOB-MED-TEN-SAD-MED-MED-MED-BOB-SAD-SAD-MED-SAD-BOB-SAD-TEN-BOB-BOB-TEN-BOB-TEN-BOB-SAD-
SAD-TEN-MED-TEN-SAD-BOB-MED-SAD-SAD-BOB-MED-TEN-TEN-SAD-SAD-SAD-BOB-BOB-BOB-TEN-MED-BOB-BOB-
TEN-BOB-SAD-SAD-BOB-BOB-BOB-MED
SAD 20%
MED 27%
TEN 23%
BOB 30%
RAN 0%I've tried to user other way, for example, using a GUID, get the checksum and get the module 5
Something like $Piece("SAD,MED,TEN,BOB,RAN",",",($ZCRC(##class(%SYSTEM.Util).CreateGUID(),0)#5) + 1)
for i=1:1:100 {W $Piece("SAD,MED,TEN,BOB,RAN",",",($ZCRC(##class(%SYSTEM.Util).CreateGUID(),0)#5) + 1),"-"}
TEN-SAD-BOB-MED-BOB-BOB-MED-MED-BOB-RAN-MED-BOB-RAN-MED-RAN-BOB-BOB-MED-RAN-SAD-RAN-MED-MED-
BOB-TEN-BOB-RAN-MED-TEN-TEN-TEN-SAD-BOB-MED-BOB-BOB-BOB-RAN-RAN-TEN-MED-RAN-RAN-BOB-RAN-TEN-
MED-TEN-TEN-MED-RAN-BOB-TEN-SAD-SAD-TEN-TEN-TEN-BOB-RAN-MED-SAD-MED-SAD-RAN-RAN-RAN-BOB-MED-
SAD-MED-RAN-RAN-SAD-RAN-RAN-BOB-MED-TEN-TEN-RAN-BOB-TEN-TEN-RAN-BOB-BOB-TEN-MED-SAD-SAD-BOB-
BOB-BOB-SAD-TEN-MED-TEN-BOB-SAD
SAD 13%
MED 20%
TEN 20%
BOB 25%
RAN 22%I have best percentage to get a different value.
Hi Kurro,
this could work but the cost in terms of hw resources is high compared to $RANDOM.
Hi Enrico, the problem is that $r(4) returns number between 0 and 3.
If you add 1 you will have numbers 1 2 3 4 but not 5.
You can correct your code with $r(5)+1
Thank you @Enrico Parisi @Kurro Lopez @Ambrogio De Lorenzo
Ops! You are right! 😊
In my defense...it was late 😂