Generating Random Values for Primitive Types
This is my first code review question in here, so kindly guide me if I need to format the question in a better way.
Task Description
Aim of the task is to create a set of methods that would allow me to
create random values for given primitive type. This would be used
later in a method that would reflect on a Complex Type (Class/Struct)
and assign random values to each of the members (Nested Properties are
also taken care of in the other method).
The code attached set of methods for creating Random Values. I was wondering if this is the best way to create a Random Value for each of the primitive type.
Code
private static bool RandomBoolean()
{
return Convert.ToBoolean(random.Next(0, 2));
}
private static double RandomDouble(Int32 minValue=Int32.MinValue,Int32 maxValue= Int32.MaxValue)
{
return random.NextDouble() * (double)random.Next(minValue,maxValue);
}
private static char RandomChar(bool isLowerCase = true)
{
if (isLowerCase)
return (char)random.Next((int)'a', (int)'z');
else
return (char)random.Next((int)'A', (int)'A');
}
private static byte RandomByte()
{
var byteArray = new byte[1];
random.NextBytes(byteArray);
return byteArray[0];
}
private static sbyte RandomSByte(int minValue=sbyte.MinValue, int maxValue = sbyte.MaxValue)
{
return (sbyte)random.Next(minValue, maxValue);
}
private static float RandomFloat()
{
double mantissa = (random.NextDouble() * 2.0) - 1.0;
double exponent = Math.Pow(2.0, random.Next(-126, 128));
return (float)(mantissa * exponent);
}
public static int NextInt32(this Random rng)
{
int firstBits = rng.Next(0, 1 << 4) << 28;
int lastBits = rng.Next(0, 1 << 28);
return firstBits | lastBits;
}
public static decimal RandomDecimal()
{
byte scale = (byte)random.Next(29);
bool sign = random.Next(2) == 1;
return new decimal(random.NextInt32(),
random.NextInt32(),
random.NextInt32(),
sign,
scale);
}
private static short RandomInt16(int minValue = Int16.MinValue, int maxValue = Int16.MaxValue)
{
return (short)random.Next(minValue, maxValue);
}
private static int RandomInt32(int minValue = Int32.MinValue, int maxValue = Int32.MaxValue)
{
return random.Next(minValue, maxValue);
}
private static long RandomInt64(long minValue = Int32.MinValue, long maxValue = Int32.MaxValue)
{
long result = random.Next((Int32)(minValue >> 32), (Int32)(maxValue >> 32));
result = (result << 32);
result = result | (long)random.Next((Int32)minValue, (Int32)maxValue);
return result;
}
private static UInt16 RandomUInt16()
{
var byteArray = new byte[2];
random.NextBytes(byteArray);
return BitConverter.ToUInt16(byteArray, 0);
}
private static UInt32 RandomUInt32()
{
var byteArray = new byte[4];
random.NextBytes(byteArray);
return BitConverter.ToUInt32(byteArray,0);
}
private static UInt64 RandomUInt64()
{
var byteArray = new byte[8];
random.NextBytes(byteArray);
return BitConverter.ToUInt64(byteArray, 0);
}
private static string RandomString(int length = 10)
{
const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
return new string(Enumerable.Repeat(chars, length)
.Select(s => s[random.Next(s.Length)]).ToArray());
}
c#
New contributor
add a comment |
This is my first code review question in here, so kindly guide me if I need to format the question in a better way.
Task Description
Aim of the task is to create a set of methods that would allow me to
create random values for given primitive type. This would be used
later in a method that would reflect on a Complex Type (Class/Struct)
and assign random values to each of the members (Nested Properties are
also taken care of in the other method).
The code attached set of methods for creating Random Values. I was wondering if this is the best way to create a Random Value for each of the primitive type.
Code
private static bool RandomBoolean()
{
return Convert.ToBoolean(random.Next(0, 2));
}
private static double RandomDouble(Int32 minValue=Int32.MinValue,Int32 maxValue= Int32.MaxValue)
{
return random.NextDouble() * (double)random.Next(minValue,maxValue);
}
private static char RandomChar(bool isLowerCase = true)
{
if (isLowerCase)
return (char)random.Next((int)'a', (int)'z');
else
return (char)random.Next((int)'A', (int)'A');
}
private static byte RandomByte()
{
var byteArray = new byte[1];
random.NextBytes(byteArray);
return byteArray[0];
}
private static sbyte RandomSByte(int minValue=sbyte.MinValue, int maxValue = sbyte.MaxValue)
{
return (sbyte)random.Next(minValue, maxValue);
}
private static float RandomFloat()
{
double mantissa = (random.NextDouble() * 2.0) - 1.0;
double exponent = Math.Pow(2.0, random.Next(-126, 128));
return (float)(mantissa * exponent);
}
public static int NextInt32(this Random rng)
{
int firstBits = rng.Next(0, 1 << 4) << 28;
int lastBits = rng.Next(0, 1 << 28);
return firstBits | lastBits;
}
public static decimal RandomDecimal()
{
byte scale = (byte)random.Next(29);
bool sign = random.Next(2) == 1;
return new decimal(random.NextInt32(),
random.NextInt32(),
random.NextInt32(),
sign,
scale);
}
private static short RandomInt16(int minValue = Int16.MinValue, int maxValue = Int16.MaxValue)
{
return (short)random.Next(minValue, maxValue);
}
private static int RandomInt32(int minValue = Int32.MinValue, int maxValue = Int32.MaxValue)
{
return random.Next(minValue, maxValue);
}
private static long RandomInt64(long minValue = Int32.MinValue, long maxValue = Int32.MaxValue)
{
long result = random.Next((Int32)(minValue >> 32), (Int32)(maxValue >> 32));
result = (result << 32);
result = result | (long)random.Next((Int32)minValue, (Int32)maxValue);
return result;
}
private static UInt16 RandomUInt16()
{
var byteArray = new byte[2];
random.NextBytes(byteArray);
return BitConverter.ToUInt16(byteArray, 0);
}
private static UInt32 RandomUInt32()
{
var byteArray = new byte[4];
random.NextBytes(byteArray);
return BitConverter.ToUInt32(byteArray,0);
}
private static UInt64 RandomUInt64()
{
var byteArray = new byte[8];
random.NextBytes(byteArray);
return BitConverter.ToUInt64(byteArray, 0);
}
private static string RandomString(int length = 10)
{
const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
return new string(Enumerable.Repeat(chars, length)
.Select(s => s[random.Next(s.Length)]).ToArray());
}
c#
New contributor
add a comment |
This is my first code review question in here, so kindly guide me if I need to format the question in a better way.
Task Description
Aim of the task is to create a set of methods that would allow me to
create random values for given primitive type. This would be used
later in a method that would reflect on a Complex Type (Class/Struct)
and assign random values to each of the members (Nested Properties are
also taken care of in the other method).
The code attached set of methods for creating Random Values. I was wondering if this is the best way to create a Random Value for each of the primitive type.
Code
private static bool RandomBoolean()
{
return Convert.ToBoolean(random.Next(0, 2));
}
private static double RandomDouble(Int32 minValue=Int32.MinValue,Int32 maxValue= Int32.MaxValue)
{
return random.NextDouble() * (double)random.Next(minValue,maxValue);
}
private static char RandomChar(bool isLowerCase = true)
{
if (isLowerCase)
return (char)random.Next((int)'a', (int)'z');
else
return (char)random.Next((int)'A', (int)'A');
}
private static byte RandomByte()
{
var byteArray = new byte[1];
random.NextBytes(byteArray);
return byteArray[0];
}
private static sbyte RandomSByte(int minValue=sbyte.MinValue, int maxValue = sbyte.MaxValue)
{
return (sbyte)random.Next(minValue, maxValue);
}
private static float RandomFloat()
{
double mantissa = (random.NextDouble() * 2.0) - 1.0;
double exponent = Math.Pow(2.0, random.Next(-126, 128));
return (float)(mantissa * exponent);
}
public static int NextInt32(this Random rng)
{
int firstBits = rng.Next(0, 1 << 4) << 28;
int lastBits = rng.Next(0, 1 << 28);
return firstBits | lastBits;
}
public static decimal RandomDecimal()
{
byte scale = (byte)random.Next(29);
bool sign = random.Next(2) == 1;
return new decimal(random.NextInt32(),
random.NextInt32(),
random.NextInt32(),
sign,
scale);
}
private static short RandomInt16(int minValue = Int16.MinValue, int maxValue = Int16.MaxValue)
{
return (short)random.Next(minValue, maxValue);
}
private static int RandomInt32(int minValue = Int32.MinValue, int maxValue = Int32.MaxValue)
{
return random.Next(minValue, maxValue);
}
private static long RandomInt64(long minValue = Int32.MinValue, long maxValue = Int32.MaxValue)
{
long result = random.Next((Int32)(minValue >> 32), (Int32)(maxValue >> 32));
result = (result << 32);
result = result | (long)random.Next((Int32)minValue, (Int32)maxValue);
return result;
}
private static UInt16 RandomUInt16()
{
var byteArray = new byte[2];
random.NextBytes(byteArray);
return BitConverter.ToUInt16(byteArray, 0);
}
private static UInt32 RandomUInt32()
{
var byteArray = new byte[4];
random.NextBytes(byteArray);
return BitConverter.ToUInt32(byteArray,0);
}
private static UInt64 RandomUInt64()
{
var byteArray = new byte[8];
random.NextBytes(byteArray);
return BitConverter.ToUInt64(byteArray, 0);
}
private static string RandomString(int length = 10)
{
const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
return new string(Enumerable.Repeat(chars, length)
.Select(s => s[random.Next(s.Length)]).ToArray());
}
c#
New contributor
This is my first code review question in here, so kindly guide me if I need to format the question in a better way.
Task Description
Aim of the task is to create a set of methods that would allow me to
create random values for given primitive type. This would be used
later in a method that would reflect on a Complex Type (Class/Struct)
and assign random values to each of the members (Nested Properties are
also taken care of in the other method).
The code attached set of methods for creating Random Values. I was wondering if this is the best way to create a Random Value for each of the primitive type.
Code
private static bool RandomBoolean()
{
return Convert.ToBoolean(random.Next(0, 2));
}
private static double RandomDouble(Int32 minValue=Int32.MinValue,Int32 maxValue= Int32.MaxValue)
{
return random.NextDouble() * (double)random.Next(minValue,maxValue);
}
private static char RandomChar(bool isLowerCase = true)
{
if (isLowerCase)
return (char)random.Next((int)'a', (int)'z');
else
return (char)random.Next((int)'A', (int)'A');
}
private static byte RandomByte()
{
var byteArray = new byte[1];
random.NextBytes(byteArray);
return byteArray[0];
}
private static sbyte RandomSByte(int minValue=sbyte.MinValue, int maxValue = sbyte.MaxValue)
{
return (sbyte)random.Next(minValue, maxValue);
}
private static float RandomFloat()
{
double mantissa = (random.NextDouble() * 2.0) - 1.0;
double exponent = Math.Pow(2.0, random.Next(-126, 128));
return (float)(mantissa * exponent);
}
public static int NextInt32(this Random rng)
{
int firstBits = rng.Next(0, 1 << 4) << 28;
int lastBits = rng.Next(0, 1 << 28);
return firstBits | lastBits;
}
public static decimal RandomDecimal()
{
byte scale = (byte)random.Next(29);
bool sign = random.Next(2) == 1;
return new decimal(random.NextInt32(),
random.NextInt32(),
random.NextInt32(),
sign,
scale);
}
private static short RandomInt16(int minValue = Int16.MinValue, int maxValue = Int16.MaxValue)
{
return (short)random.Next(minValue, maxValue);
}
private static int RandomInt32(int minValue = Int32.MinValue, int maxValue = Int32.MaxValue)
{
return random.Next(minValue, maxValue);
}
private static long RandomInt64(long minValue = Int32.MinValue, long maxValue = Int32.MaxValue)
{
long result = random.Next((Int32)(minValue >> 32), (Int32)(maxValue >> 32));
result = (result << 32);
result = result | (long)random.Next((Int32)minValue, (Int32)maxValue);
return result;
}
private static UInt16 RandomUInt16()
{
var byteArray = new byte[2];
random.NextBytes(byteArray);
return BitConverter.ToUInt16(byteArray, 0);
}
private static UInt32 RandomUInt32()
{
var byteArray = new byte[4];
random.NextBytes(byteArray);
return BitConverter.ToUInt32(byteArray,0);
}
private static UInt64 RandomUInt64()
{
var byteArray = new byte[8];
random.NextBytes(byteArray);
return BitConverter.ToUInt64(byteArray, 0);
}
private static string RandomString(int length = 10)
{
const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
return new string(Enumerable.Repeat(chars, length)
.Select(s => s[random.Next(s.Length)]).ToArray());
}
c#
c#
New contributor
New contributor
New contributor
asked 2 mins ago
Anu Viswan
10111
10111
New contributor
New contributor
add a comment |
add a comment |
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function () {
return StackExchange.using("mathjaxEditing", function () {
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix) {
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["\$", "\$"]]);
});
});
}, "mathjax-editing");
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "196"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Anu Viswan is a new contributor. Be nice, and check out our Code of Conduct.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f210677%2fgenerating-random-values-for-primitive-types%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
Anu Viswan is a new contributor. Be nice, and check out our Code of Conduct.
Anu Viswan is a new contributor. Be nice, and check out our Code of Conduct.
Anu Viswan is a new contributor. Be nice, and check out our Code of Conduct.
Anu Viswan is a new contributor. Be nice, and check out our Code of Conduct.
Thanks for contributing an answer to Code Review Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
Use MathJax to format equations. MathJax reference.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f210677%2fgenerating-random-values-for-primitive-types%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown