简体   繁体   中英

How do I Concat a loop of a char random array?

I have a char array like this:

char[] true_false = new char[2]{'V','F'};  

A variable random:

Random rand = new Random();

I have a string called generate_code , with the initial value is true_false[rand.Next(0, 2)].ToString();

string generate_code = true_false[rand.Next(0, 2)].ToString();

And the user will set the int lenght_of;

int lenght_of = int.Parse(Console.ReadLine());

So, what I am trying to do is: the user will define the lenght_of that will be the lenght of the generate_code like this:

 for(int i =0; i < lenght_of;i++){
    generate_code = generate_code + (char)true_false[rand.Next(0, 2)];
 }

But the problem is that I need a fixed variable like :

generate_code = (char)true_false[rand.Next(0, 2)] + (char)true_false[rand.Next(0, 2)];

if lenght_of =2; and I have a loop that will change the generate_code value ten times.How can I do that? **I hope that u guys understand it is hard to explain.

Example:

lenght_of = 2;

 //Example "FF"; 
generate_code = true_false[rand.Next(0, 2)] + true_false[rand.Next(0, 2)];

for(int i =0; i < 10;i++) { 
    Console.WriteLine(generate_code); 
} //Output expected: "FF" "VV" "FV" "VF" "FF"

Your problem is that you're adding two char 's together. char is a numeric type.. therefore you're getting numbers as the result. Also, your generate_code assignment must be inside your loop:

for(int i =0; i < 10;i++) { 
    generate_code = string.Format("{0}", generateCodeWithLength(rand, true_false, lenght_of));
    Console.WriteLine(generate_code); 
}

Wrap the code generation in a method that accepts the length:

public string generateCodeWithLength(Random rand, char[] true_false, int length) {
    var result = new StringBuilder(length);

    for (var i = 0; i < length; i++) {
        result.Append(true_false[rand.Next(0, 2)]);
    }

    return result.ToString();
}

Or better yet.. a StringBuilder . Clicky clicky live example .

You need to refresh generate_code in each iteration of the loop:

for(int i =0; i < 10;i++) { 
   int loopCounter = 0;
   while (loopCounter < length_of)
   {
       generate_code += true_false[rand.Next(0, 2)]; //Add one more char to generate_code
       loopCounter += 1;
   }
   Console.WriteLine(generate_code); 
} //Output expected if length_of = 3: "FFV" "VFV" "FVF" "FFF" "VVV"

That way, each output will be random.

Alternatively you can also do something like:

for(int i =0; i < 10;i++) {
    Console.WriteLine(string.Format("{0}{1}", true_false[rand.Next(0, 2)] + true_false[rand.Next(0, 2)]));
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM