Thread overview
How to generate a random string ...
Mar 16, 2015
bearophile
Mar 16, 2015
Gary Willoughby
Mar 17, 2015
Panke
March 16, 2015
... from all Unicode characters in an idiomatic D way? (std.interal.unicode_*)

```
T genUnicodeString(T)(size_t minChars, size_t maxChars) if(isSomeString!T) {
    ...
}
```
March 16, 2015
Robert burner Schadek:

> ... from all Unicode characters in an idiomatic D way?

Perhaps by rejection? I mean, generating a uint, test if it's a character and repeat until the result is true.

Bye,
bearophile
March 16, 2015
On Monday, 16 March 2015 at 18:48:29 UTC, bearophile wrote:
> Perhaps by rejection? I mean, generating a uint, test if it's a character and repeat until the result is true.

hm, that must not even terminate.

March 16, 2015
On Monday, 16 March 2015 at 13:33:55 UTC, Robert burner Schadek
wrote:
> ... from all Unicode characters in an idiomatic D way? (std.interal.unicode_*)
>
> ```
> T genUnicodeString(T)(size_t minChars, size_t maxChars) if(isSomeString!T) {
>     ...
> }
> ```

I guess it depends on the encoding?

Some references:
http://stackoverflow.com/questions/23853489/generate-a-random-unicode-string
http://www.bonf.net/2009/01/14/generating-random-unicode-strings-in-c/
March 16, 2015
On Monday, 16 March 2015 at 22:19:52 UTC, Gary Willoughby wrote:
> I guess it depends on the encoding?

No the character itself are encoding independent.

>
> Some references:
> http://stackoverflow.com/questions/23853489/generate-a-random-unicode-string

This will not work as the caller has to specify the code range. I
want to specify the string length and the random use is not even
uniform (see channel 9 link)
http://channel9.msdn.com/Events/GoingNative/2013/rand-Considered-Harmful


> http://www.bonf.net/2009/01/14/generating-random-unicode-strings-in-c/

I'm not use how that is going to give me the 113,021 unicode
defined characters let alone in a uniform way.
March 17, 2015
On Monday, 16 March 2015 at 13:33:55 UTC, Robert burner Schadek
wrote:
> ... from all Unicode characters in an idiomatic D way? (std.interal.unicode_*)
>
> ```
> T genUnicodeString(T)(size_t minChars, size_t maxChars) if(isSomeString!T) {
>     ...
> }
> ```

You'll need two things. A uniform distribution of { 0 ... 113,020
}, this should be easy using phobos. And a mapping of { 0 ...
113,020 } -> unicode ( or UTFX directly ). Since the unicode
planes or not connected, this might involve some kind of table.

Then just generate your uniform distribution and apply the
mapping.