Multithreading 从给定字符生成给定长度的所有字符串

Multithreading 从给定字符生成给定长度的所有字符串,multithreading,algorithm,language-agnostic,Multithreading,Algorithm,Language Agnostic,我想从给定的字符生成给定长度的字符串。字符的顺序很重要,我也想使用多个线程来生成它。以下是几个例子: chars: a,b,c,d length: 1 output: a b c d chars: a,b,c,d length: 2 output: aa ab ac ad bb ba bc bd cc ca cb cd dd da db dc 我尝试过这个算法: 注意:这是伪代码 func generate(set, str, k){ if (k == 0){ pri

我想从给定的字符生成给定长度的字符串。字符的顺序很重要,我也想使用多个线程来生成它。以下是几个例子:

chars: a,b,c,d
length: 1
output: 
a
b
c
d
chars: a,b,c,d
length: 2
output:
aa
ab
ac
ad
bb
ba
bc
bd
cc
ca
cb
cd
dd
da
db
dc
我尝试过这个算法: 注意:这是伪代码

func generate(set, str, k){
    if (k == 0){
        print str;
        return;
    }
    for (c in set) {
        newString = str + c;
        generate(set, newString, k-1);
    }
}

但是,我不知道如何使用多线程。我读过的所有其他算法都不适合我的需要。

此算法不需要使用多线程。for循环仅用于生成所需长度的字符串。在java中,代码是这样的

import java.util.Random;

public class RandomString2 {

static String[] option = {"a","b","v","k"}; 

static String getRandomElement()
{
    int idx = new Random().nextInt(option.length);
    return option[idx];
}

static String getRandomString(int length)
{
    String result="";
    for(int i = 1; i<=length ; i++)
    {
        result += getRandomElement();
    }
    return result;
}

public static void main(String[] args) {
    // TODO Auto-generated method stub

    System.out.println(getRandomString(5));  // pass string length as parameter

}

}
import java.util.Random;
公开课2{
静态字符串[]选项={“a”、“b”、“v”、“k”};
静态字符串getRandomElement()
{
int idx=new Random().nextInt(option.length);
返回选项[idx];
}
静态字符串getRandomString(整数长度)
{
字符串结果=”;

对于(int i=1;iIn what programming language?正确标记您的问题,并展示您的研究成果,我不关心编程语言,只要它不是brainfuck.Python那样的东西,您可以迭代
itertools.product('abcd',repeat=2)
以获得第二个所需的输出。如果我能正确理解,是否介意使用itertools.product('abcd',repeat=2)进一步解释我得到“ab”?我想使算法多线程,因为我计划将其用于许多组合。我不知道您计划执行什么。但多线程用于单独的执行路径。我已经回答了您的特定问题。您最好发布一些代码。我可能误解了然而,我想要的是在多个线程/处理器之间分割计算,这样我可以更快地计算结果。