ºÇ½ª¹¹¿·¡§ 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)¤òºîÀ®¤·¤Þ¤¹¡£
¡¡¤³¤Î½èÍý¤ò±þÍѤ¹¤ì¤Ð¡¢¿ô»ú¤äµ¹æ¤ò´Þ¤á¤¿¥é¥ó¥À¥à¤Êʸ»úÎó¤âÀ¸À®²Äǽ¤Ç¤¹¡£
- ¥«¥Æ¥´¥ê¡§
- ¿Ê³Ø/¥¹¥¯¡¼¥ë
- ¥×¥í¥°¥é¥ß¥ó¥°
¥³¥á¥ó¥È¤ò¤«¤¯