ºÇ½ª¹¹¿·¡§
orika_ex_miyako 2024ǯ01·î02Æü(²Ð) 11:40:51ÍúÎò
using System;
public static class AlphabetManager
{
private static readonly string Alphabets = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
/// <summary>
/// »ØÄꤵ¤ì¤¿Ä¹¤µ¤Î¥é¥ó¥À¥à¤Ê¥¢¥ë¥Õ¥¡¥Ù¥Ã¥Èʸ»úÎó¤òÀ¸À®¤·¤Þ¤¹¡£
/// ¥Ç¥Õ¥©¥ë¥È¤Ç¤Ïʸ»úÎó¤ÎŤµ¤Ï5¤Ç¤¹¡£
/// </summary>
/// <param name="length">À¸À®¤¹¤ë¥¢¥ë¥Õ¥¡¥Ù¥Ã¥Èʸ»úÎó¤ÎŤµ¡£</param>
/// <returns>»ØÄꤵ¤ì¤¿Ä¹¤µ¤Î¥é¥ó¥À¥à¤Ê¥¢¥ë¥Õ¥¡¥Ù¥Ã¥Èʸ»úÎó¡£</returns>
public static string GetRamdomAlphabet(int length = 5)
{
// Íð¿ôÀ¸À®´ï¤Î¥¤¥ó¥¹¥¿¥ó¥¹
Random random = new();
// »ØÄꤵ¤ì¤¿¥¢¥ë¥Õ¥¡¥Ù¥Ã¥Èʸ»úÎó¤ò»ØÄꤵ¤ì¤¿²ó¿ô¤À¤±·«¤êÊÖ¤·¡¢
// ¤½¤ì¤¾¤ì¤«¤é¥é¥ó¥À¥à¤Ë1ʸ»ú¤º¤ÄÁª¤Ó¡¢¿·¤·¤¤Ê¸»úÎó¤òÀ¸À®¤¹¤ë
string result = "";
for (int i = 0; i < n; i++)
{
result += txt[random.Next(txt.Length)];
}
return result;
}
}
¡¡Random ¥¯¥é¥¹¤Ë¤¢¤ë Next ¥á¥½¥Ã¥É¤òÍøÍѤ·¤Æ¡¢»öÁ°¤ËÍѰդ·¤Æ¤ª¤¤¤¿Ê¸»úÎ󤫤é¥é¥ó¥À¥à¤Êʸ»ú£±¤Ä¤òÃê½Ð¤·¡¢
¤½¤ì¤ò»ØÄê²ó¿ô·«¤êÊÖ¤¹¤³¤È¤Ç¥é¥ó¥À¥à¤Êʸ»ú¤Îʸ»úÎó¤òÀ¸À®¤·¤Æ¤¤¤Þ¤¹¡£
¡¡¤³¤Î½èÍý¤Î¾ì¹ç¡¢³ÆÊ¸»ú¤¬ Alphabets ¤«¤é¥é¥ó¥À¥à¤ËÁªÂò¤µ¤ì¤Æ¤¤¤ë¤¿¤á¡¢Æ±¤¸Ê¸»ú¤¬Ê£¿ô²óÁª¤Ð¤ì¤ë²ÄǽÀ¤¬¤¢¤ê¤Þ¤¹¡£
Î㤨¤Ð¡¢"aaaaa"¤ä"abcde"¤Î¤è¤¦¤Ê·ë²Ì¤âȯÀ¸¤¹¤ë²ÄǽÀ¤¬¤¢¤ê¤Þ¤¹¡£
¡¡¥é¥ó¥À¥à¤Êʸ»úÎóÀ¸À®¤Ç¤Ï¡¢½ÅÊ£¤äÆÃÄê¤Î¥Ñ¥¿¡¼¥ó¤¬È¯À¸¤¹¤ë²ÄǽÀ¤Ëα°Õ¤¹¤ë¤³¤È¤¬½ÅÍפǤ¹¡£
¡¡LINQ ¤ò³èÍѤ·¤¿¾ì¹ç¤Ë¤Ï¡¢°Ê²¼¤Î¤è¤¦¤Ë¥ê¥Õ¥¡¥¯¥¿¥ê¥ó¥°¤Ç¤¤Þ¤¹¡£
using System;
using System.Linq;
public static class AlphabetManager
{
private static readonly string Alphabets = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
/// <summary>
/// »ØÄꤵ¤ì¤¿Ä¹¤µ¤Î¥é¥ó¥À¥à¤Ê¥¢¥ë¥Õ¥¡¥Ù¥Ã¥Èʸ»úÎó¤òÀ¸À®¤·¤Þ¤¹¡£
/// ¥Ç¥Õ¥©¥ë¥È¤Ç¤Ïʸ»úÎó¤ÎŤµ¤Ï5¤Ç¤¹¡£
/// </summary>
/// <param name="length">À¸À®¤¹¤ë¥¢¥ë¥Õ¥¡¥Ù¥Ã¥Èʸ»úÎó¤ÎŤµ¡£</param>
/// <returns>»ØÄꤵ¤ì¤¿Ä¹¤µ¤Î¥é¥ó¥À¥à¤Ê¥¢¥ë¥Õ¥¡¥Ù¥Ã¥Èʸ»úÎó¡£</returns>
public static string GetRamdomAlphabet(int length = 5)
{
// Íð¿ôÀ¸À®´ï¤Î¥¤¥ó¥¹¥¿¥ó¥¹
Random random = new();
return new string(Enumerable.Repeat(Alphabets, length)
.Select(alphabet => alphabet[random.Next(alphabet.Length)])
.ToArray());
}
}
¡¡Enumerable.Repeat¤Ç»ØÄꤷ¤¿Ä¹¤µ¤Îʸ»úÎó¤òÀ¸À®¤·¡¢¤½¤ì¤ò Select ¤Ç¥é¥ó¥À¥à¤ËÁªÂò¤·¡¢
ToArray ¤Çʸ»úÇÛÎó¤ËÊÑ´¹¤·¤Æ¡¢ºÇ½ªÅª¤Ë new string ¤Çʸ»úÎó¤ËÌᤷ¤Æ¤¤¤Þ¤¹¡£
// ¾åµ½èÍý¤ò LINQ ¤ÇÃÖ¤´¹¤¨¤¿¾ì¹ç
return new string(Enumerable.Repeat(Alphabets, length)
.Select(alphabet => alphabet[random.Next(alphabet.Length)])
.ToArray());
¡¡Enumerable.Repeat(Alphabets, length) ¤Ë¤è¤Ã¤Æ Alphabets ¤¬ length ²ó·«¤êÊÖ¤µ¤ì¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£
¤·¤¿¤¬¤Ã¤Æ¡¢Select ¤Î¥é¥à¥À¼°Æâ¤Î°ú¿ô¤Ç¤¢¤ë alphabet ¤Ï Alphabets ¤½¤Î¤â¤Î¤ò»Ø¤·¤Þ¤¹¡£¤³¤ÎÉôʬ¤Ç³ÆÊ¸»úÎó¤¬ random.Next(alphabet.Length) ¤Ç¥é¥ó¥À¥à¤ËÁªÂò¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
¡¡»ØÄꤵ¤ì¤¿ alphabet ʸ»úÎ󤫤é¥é¥ó¥À¥à¤Ë1¤Ä¤Îʸ»ú¤òÁªÂò¤·¤Æ¤¤¤Þ¤¹¡£
¤Ä¤Þ¤ê¡¢alphabet[random.Next(alphabet.Length)] ¤Ï¡¢alphabet ʸ»úÎó¤ÎÃæ¤«¤é¥é¥ó¥À¥à¤Ë1ʸ»ú¤òÁªÂò¤·¤Æ¤¤¤Þ¤¹¡£
¤³¤Î½èÍý¤ò length ²ó·«¤êÊÖ¤·¤Æ¤¤¤ë¤Î¤Ç¡¢ºÇ½ªÅª¤Ë length ¸Ä¤Î¥é¥ó¥À¥à¤Êʸ»úÎ󤬤Ǥ¡¢¥ê¥Õ¥¡¥¯¥¿¥ê¥ó¥°Á°¤ÈƱ¤¸½èÍý¤Ë¤Ê¤ê¤Þ¤¹¡£
¡¡Î㤨¤Ð¡¢½ÅÊ£¤·¤Ê¤¤Ê¸»ú¤ò»ØÄê¿ôÁªÂò¤¹¤ë¤Î¤Ç¤¢¤ì¤Ð¡¢°Ê²¼¤Î¤è¤¦¤Ê¼ÂÁõÊýË¡¤¬¤¢¤ê¤Þ¤¹¡£
using System.Text;
/// <summary>
/// »ØÄꤵ¤ì¤¿Ä¹¤µ¤Î¥é¥ó¥À¥à¤Ê¥¢¥ë¥Õ¥¡¥Ù¥Ã¥Èʸ»úÎó¤òÀ¸À®¤·¤Þ¤¹¡£½ÅÊ£¤Ê¤·¥Ð¡¼¥¸¥ç¥ó¡£
/// ¥Ç¥Õ¥©¥ë¥È¤Ç¤Ïʸ»úÎó¤ÎŤµ¤Ï5¤Ç¤¹¡£
/// </summary>
/// <param name="length">À¸À®¤¹¤ë¥¢¥ë¥Õ¥¡¥Ù¥Ã¥Èʸ»úÎó¤ÎŤµ¡£</param>
/// <returns>»ØÄꤵ¤ì¤¿Ä¹¤µ¤Î¥é¥ó¥À¥à¤Ê¥¢¥ë¥Õ¥¡¥Ù¥Ã¥Èʸ»úÎó¡£</returns>
public static string GetRandomUniqueAlphabet(int length = 5)
{
Random random = new();
// ÁªÂò¤·¤¿Ê¸»ú¤òÊÝ»ý¤¹¤ë¤¿¤á¤ÎHashSet
HashSet<char> selectedChars = new HashSet<char>();
// ʸ»úÎó¤ÎŤµ¤¬¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È¤Î¼ïÎà¿ô¤òͤ¨¤ë¾ì¹ç¤Ï¡¢¼ïÎà¿ô¤Ë¹ç¤ï¤»¤ë
length = Math.Min(length, Alphabets.Length);
// StringBuilder¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤òºîÀ®
StringBuilder resultBuilder = new StringBuilder();
// ÁªÂò¤µ¤ì¤¿Ê¸»ú¤¬»ØÄê¤ÎŤµ¤Ë㤹¤ë¤Þ¤Ç·«¤êÊÖ¤¹
while (selectedChars.Count < length)
{
// ¥¢¥ë¥Õ¥¡¥Ù¥Ã¥Èʸ»úÎ󤫤é¥é¥ó¥À¥à¤Ë1ʸ»úÁª¤Ö
char selectedChar = Alphabets[random.Next(Alphabets.Length)];
// ½ÅÊ£¤òËɤ°¤¿¤á¡¢HashSet¤ËÄɲäǤ¤¿¾ì¹ç¤Î¤ßÊÝ»ý¤¹¤ë
if (selectedChars.Add(selectedChar))
{
// selectedChar ¤¬¤Þ¤ÀÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï·ë²Ì¤ËÄɲ乤ë
resultBuilder.Append(selectedChar);
}
}
¡¡¡¡// ʸ»úÎó¤òºîÀ®¤·¤ÆÌ᤹
return resultBuilder.ToString();
}
¡¡¤³¤Î¼ÂÁõ¤Ç¤Ï¡¢HashSet ¤ò»È¤Ã¤ÆÁªÂò¤µ¤ì¤¿Ê¸»ú¤òÊÝ»ý¤·¡¢¿·¤¿¤ËÁª¤Ð¤ì¤¿Ê¸»ú¤¬´û¤Ë¥»¥Ã¥È¤Ë´Þ¤Þ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Î¤ßÄɲä·¤Þ¤¹¡£
¤³¤ì¤Ë¤è¤ê¡¢¥é¥ó¥À¥à¤Êʸ»úÎ󤬻ØÄꤵ¤ì¤¿Ä¹¤µ¤Ë㤹¤ë¤Þ¤Ç¡¢½ÅÊ£¤¹¤ë¤³¤È¤¬¤¢¤ê¤Þ¤»¤ó¡£
HashSet ¤Ï½ÅÊ£¤·¤Ê¤¤Á°Äó¤ÇÍøÍѤǤ¤ë¥³¥ì¥¯¥·¥ç¥óµ¡Ç½¤Ç¤¹¤Î¤Ç¡¢¤³¤¦¤¤¤Ã¤¿¾ìÌ̤ÇÊØÍø¤Ç¤¹¡£
MicroSoft
HashSet<T> ¥¯¥é¥¹
https://learn.microsoft.com/ja-jp/dotnet/api/syste...
¡¡¤Þ¤¿ Math.Min ¥á¥½¥Ã¥É¤òÍøÍѤ·¡¢»ØÄꤵ¤ì¤¿Ä¹¤µ length ¤¬¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È¤Î¼ïÎà¿ô¤òͤ¨¤Ê¤¤¤è¤¦¤Ë³Îǧ¤·¤Æ¤¤¤Þ¤¹¡£
¤â¤· length ¤¬ Alphabets.Length ¤è¤ê¤âÂ礤¤¾ì¹ç¤Ï¡¢length ¤ò Alphabets.Length ¤ËÀ©¸Â¤¹¤ë¤³¤È¤Ç¡¢¤¤¤º¤ì¤«¾®¤µ¤¤Êý¤Ë¼ý¤Þ¤ë¤è¤¦¤Ë¤·¤Æ¤¤¤Þ¤¹¡£
¤³¤ì¤Ë¤è¤ê¡¢¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È¤Î¼ïÎà¿ô¤òͤ¨¤ë¤è¤¦¤Ê»ØÄ꤬¤µ¤ì¤¿¾ì¹ç¤Ç¤â¡¢ÉÔÀµ¤Ê¥¤¥ó¥Ç¥Ã¥¯¥¹¤¬È¯À¸¤»¤º¤ËºÑ¤ß¤Þ¤¹¡£
¡¡¤Ê¤ª¡¢StringBuilder ¤Î½é´üÃÍ¤Ï string.Empty(Ťµ 0 ¤Îʸ»úÎó("")) ¤Ç¤¹¡£
²¾¤Ë length ¤¬ 0 ¤Î¾ì¹ç¡¢while ʸ¤Ï¼Â¹Ô¤µ¤ì¤Þ¤»¤ó¡£¤½¤Î¤¿¤á¡¢StringBuilder ·¿¤Î resultBuilder ÊÑ¿ô¤ÎÃÍ¤Ï "" ¤Ç¤¹¡£
¤è¤Ã¤Æ ToString ¥á¥½¥Ã¥É¤Î·ë²Ì¤âŤµ 0 ¤Îʸ»úÎó("") ¤Ë¤Ê¤ê¤Þ¤¹¡£Ëü¤¬°ì¤Î¾ì¹ç¤Ë¤â null ¥¨¥é¡¼¤Ë¤Ï¤Ê¤ê¤Þ¤»¤ó¡£
MicroSoft
StringBuilder ¥³¥ó¥¹¥È¥é¥¯¥¿¡¼
https://learn.microsoft.com/ja-jp/dotnet/api/syste...
¡¡LINQ ¤ò³èÍѤ·¤¿¾ì¹ç¤Ë¤Ï¡¢°Ê²¼¤Î¤è¤¦¤Ë¥ê¥Õ¥¡¥¯¥¿¥ê¥ó¥°¤Ç¤¤Þ¤¹¡£
/// <summary>
/// »ØÄꤵ¤ì¤¿Ä¹¤µ¤Î¥é¥ó¥À¥à¤Ê¥¢¥ë¥Õ¥¡¥Ù¥Ã¥Èʸ»úÎó¤òÀ¸À®¤·¤Þ¤¹¡£½ÅÊ£¤Ê¤·¥Ð¡¼¥¸¥ç¥ó¡£
/// ¥Ç¥Õ¥©¥ë¥È¤Ç¤Ïʸ»úÎó¤ÎŤµ¤Ï5¤Ç¤¹¡£
/// </summary>
/// <param name="length">À¸À®¤¹¤ë¥¢¥ë¥Õ¥¡¥Ù¥Ã¥Èʸ»úÎó¤ÎŤµ¡£</param>
/// <returns>»ØÄꤵ¤ì¤¿Ä¹¤µ¤Î¥é¥ó¥À¥à¤Ê¥¢¥ë¥Õ¥¡¥Ù¥Ã¥Èʸ»úÎó¡£</returns>
public static string GetRandomUniqueAlphabet(int length = 5)
{
Random random = new();
¡¡¡¡length = Math.Min(length, Alphabets.Length);
// LINQ¤ò»ÈÍѤ·¤Æ½ÅÊ£¤Ê¤·¤Î¥é¥ó¥À¥à¤Ê char[] ÇÛÎó¤òÀ¸À®(¤³¤Î»þÅÀ¤Ç¤Ïʸ»úÎó(string)¤Ç¤Ï¤Ê¤¤)
char[] result = Enumerable.Range(0, length)
¡¡¡¡ .Select(_ => Alphabets[random.Next(Alphabets.Length)])
.Distinct()
.ToArray();
// char ÇÛÎ󤫤鿷¤·¤¤Ê¸»úÎó(string)¤òºîÀ®¤·¤ÆÌ᤹
return new string(result);
¡¡¤³¤Î¥ê¥Õ¥¡¥¯¥¿¥ê¥ó¥°¤Ç¤Ï¡¢Enumerable.Range¤ò»ÈÍѤ·¤Æ°ú¿ô¤Ç»ØÄꤷ¤¿¿ôÃͤΥ·¡¼¥±¥ó¥¹¤òÀ¸À®¤·¡¢
Select ¥á¥½¥Ã¥É¤òÍøÍѤ·¤Æ³Æ¿ôÃͤËÂФ·¤Æ¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È¤«¤é¥é¥ó¥À¥à¤Êʸ»ú¤òÁªÂò¤·¤Þ¤¹¡£
¤½¤·¤Æ¡¢Distinct¥á¥½¥Ã¥É¤ò»ÈÍѤ·¤Æ·ë²Ì¤Ë½ÅÊ£¤¬¤Ê¤¤¤è¤¦¤Ë¤·¤Þ¤¹¡£
¡¡ºÇ¸å¤Ë¡¢·ë²Ì¤ò char ÇÛÎó¤ËÊÑ´¹¤·¤Æ¡¢¤½¤Î char ÇÛÎ󤫤鿷¤·¤¤Ê¸»úÎó(string)¤òºîÀ®¤·¤Þ¤¹¡£
¡¡¤³¤Î½èÍý¤ò±þÍѤ¹¤ì¤Ð¡¢¿ô»ú¤äµ¹æ¤ò´Þ¤á¤¿¥é¥ó¥À¥à¤Êʸ»úÎó¤âÀ¸À®²Äǽ¤Ç¤¹¡£
- ¥«¥Æ¥´¥ê¡§
- ¿Ê³Ø/¥¹¥¯¡¼¥ë
- ¥×¥í¥°¥é¥ß¥ó¥°




¥³¥á¥ó¥È¤ò¤«¤¯