Generating random characters from strings

  • Thread starter Thread starter Hiche
  • Start date Start date
  • Tags Tags
    Random Strings
Click For Summary

Discussion Overview

The discussion revolves around writing a program that generates a new string by selecting N random characters from a given string, with a focus on programming techniques and constraints related to random selection.

Discussion Character

  • Homework-related
  • Technical explanation
  • Debate/contested

Main Points Raised

  • Post 1 outlines the homework requirements and seeks a method to generate random characters from a string using a loop and random number generation.
  • Post 2 suggests using a random number as an index to access characters in the string, although it notes that a direct approach may not work.
  • Post 3 proposes a method involving shuffling an array of indices to ensure unique character selection, while emphasizing the fun of programming random choices.
  • Post 4 presents a code attempt that generates random characters but notes that arrays are not covered in the course, which limits the approach. The participant believes their code works based on output.
  • Post 5 critiques the code in Post 4, pointing out that it does not construct a new string and raises the issue of potentially selecting the same character multiple times.

Areas of Agreement / Disagreement

Participants express differing views on the implementation details, particularly regarding the use of arrays and the handling of character selection. There is no consensus on the best approach, and some concerns remain unresolved.

Contextual Notes

Participants have varying levels of familiarity with programming concepts such as arrays and random number generation, which affects their proposed solutions and critiques.

Who May Find This Useful

Students learning programming concepts related to randomization, string manipulation, and those working on similar homework assignments in computer science or software development.

Hiche
Messages
82
Reaction score
0

Homework Statement



Write a program that takes a positive integer N and a string as command line arguments (N is assumed to be smaller than the length of the string). The program should pick N random characters from the string and construct and print a new string composed of these random characters.

Homework Equations



for loops. random(?)

The Attempt at a Solution



We so far learned how to generate random double variables using Math.random(). Is there a way (method) to generate random characters in strings?

Code:
<method signature><method name><parameters> 

for i = 0; i < some integer; i++
       string.random.charAt(i); // not really a command but something as this exists?
 
Physics news on Phys.org
It depends on the language, but you have to use random number as an index to the string. Something like - for example - string[rand()] - it won't work, but should push you in the right direction.
 
A more descriptive title would be, "Choosing N characters at random from a string of k characters". I imagine that you are not allowed to choose the ith character more than once, for any i?

Random numbers are fascinating. Choosing things at random is fun to program.

A foolproof method is to set up an array A[1]...A[k] storing the numerals 1..k in that order. Then shuffle (i.e., randomly mix up or swap around) the elements of array A. (I'll leave you to think about how to shuffle.)

Then simply print out the characters in your string that correspond in position to the numbers found in the first N elements of array A (because they have now been well shuffled).

This way, you aren't making any great demands on your random number generator, and you can monitor everything along the way to make sure it is working out exactly as you planned. Yes, you can plan random events! :smile:
 
Unfortunately, we haven't covered arrays in the course so using them will result in a failing grade at the moment. But thank you for the answer; this will sure come in handy when we take arrays. I actually thought of it and I think it worked:

Code:
public class RandomString
{
	public static void main(String[] args)
	{
		int n = Integer.parseInt(args[0]); // n should be less than the length of the string
		String str = args[1];
		
		for (int i = 1; i <= n; i++)
		{
			int position = randomGenerator(str.length());
			char c = str.charAt(position);
			System.out.print(c);
		}
	}
	
	public static int randomGenerator(int n)
	{
		double rand = Math.random();
		double num = 1 + rand * (n - 1); // the string's length starts at 1 hence we add 1
		int position = (int) num; 
		return position;
	}
}

The output blabbered a string of random characters, so I'm guessing it worked.
 
Two comments. Your code doesn't actually "construct ... a new string". Also, there is nothing to prevent your program selecting the same character position multiple times; is this likely to be a problem?
 

Similar threads

Replies
4
Views
3K
Replies
4
Views
2K
  • · Replies 3 ·
Replies
3
Views
2K
  • · Replies 1 ·
Replies
1
Views
3K
  • · Replies 5 ·
Replies
5
Views
4K
  • · Replies 37 ·
2
Replies
37
Views
5K
Replies
8
Views
2K
  • · Replies 12 ·
Replies
12
Views
4K
  • · Replies 12 ·
Replies
12
Views
10K
  • · Replies 18 ·
Replies
18
Views
4K