Error while generate DNA with uniform()
Salih Dincer
salihdb at hotmail.com
Sat Sep 3 12:09:40 UTC 2022
Hi All,
We discovered a bug yesterday and reported it:
https://forum.dlang.org/thread/mailman.1386.1662137084.31357.digitalmars-d-bugs@puremagic.com
You know, there is `generate()` depend to `std.range`. It created
the error when we use it with the value of an enum. Which get
their values from an `enum DNA`, we have 4 members that we want
to generate 32 pieces randomly like this:
```d
import std;
void main()
{
enum DNA { timin = 84,
sitozin = 67,
guanin = 71,
adenin = 65
}
char[] gene;
enum n = 32;
auto range = generate!(() => uniform(DNA.min,
DNA.max)).take(n);/*
auto preferred = generate!(() =>
uniform!"[]"(DNA.min,
DNA.max)).take(n);//*/
// # Alternative Solution:
foreach (_; 0..n)
{
gene ~= uniform!"[]"(DNA.min, DNA.max);
}
gene.writeln; // CGACGTGCTTCATCGATAGGAGCACGAGGAGC
// If the ASCII table matches (capital group 64-95) there
should be no problem...
}
```
If there was no alternative solution, we would generate random
numbers between 65 and 84 that have no equivalent in DNA. We want
to use "[]" ( closed to the left and right) but preferred
version doesn't compile.
Can we solve this issue with our own `generate()` structure?
SDB at 79
More information about the Digitalmars-d-learn
mailing list