๋ฐ˜์‘ํ˜•

๋žœ๋ค ๊ฒŒ์‹œ๊ธ€(ํ˜น์€ ๋Œ“๊ธ€)์„ ๊ตฌํ˜„ํ•œ๋‹ค๊ณ  ๊ฐ€์ •, ๊ธฐ๋ณธ์ ์œผ๋กœ ์—ฌ๋Ÿฌ๊ฐœ์˜ ์œ ์ € ์ด๋ฆ„, ๋ฉ”์‹œ์ง€ ํ…์ŠคํŠธ๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ์œ ์ € ์ด๋ฆ„์ด๋‚˜ ๋žœ๋ค ํ…์ŠคํŠธ๋Š” ์˜๋ฌธ Lorem์ฒ˜๋Ÿผ ์ž๋™ ์ƒ์„ฑํ•ด์ฃผ๋Š” ์‚ฌ์ดํŠธ๋ฅผ ํ™œ์šฉํ•˜๋ฉด ๋œ๋‹ค. 10๊ฐœ ์ •๋„ ๋”๋ฏธ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•œ ํ›„ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ Math.random์„ ํ™œ์šฉํ•˜๋ฉด ์œ ์ €๋ณ„๋กœ ๋‹ค๋ฅธ ๋ฉ”์‹œ์ง€ ํ…์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

 

ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ ๋ฆฌ์ŠคํŠธ


  1. ์œ ์ € ์ด๋ฆ„ : ํ•œ๊ธ€ ๋žœ๋ค ์ด๋ฆ„ ์ƒ์„ฑ๊ธฐ ์ด์šฉ
  2. const randomUser = ['์˜ˆ์„ธํฌ', 'ํ—ˆ์„ ์ˆ™', '์ œ๊ฐˆ์ง€ํ›ˆ', '์‹ฌ์„ฑํƒœ', ...]
  3. ๋ฉ”์‹œ์ง€ ํ…์ŠคํŠธ : ํ•œ๊ธ€ Lorem ์‚ฌ์ดํŠธ์ธ ๊ฐ„์„ธ๋„ค ํ˜น์€ ํ•œ๊ธ€์ž…์ˆจ ์ด์šฉ
  4. const randomMessage = ['๊ด‘์•ผ์—์„œ ๋ฌด์—‡์„ ๋ณด๋‚ด๋Š”...', '...', '...', ...]
  5. ์ƒ์„ฑ์ผ : new Date() ์ด์šฉ

 

๋žœ๋ค ์ˆซ์ž ์ƒ์„ฑ ํ•จ์ˆ˜ โญ๏ธ


`Math.random()`๊ณผ `Math.floor()`๋ฅผ ์ด์šฉํ•˜์—ฌ ์ง€์ •ํ•œ ์ตœ๋Œ€ ์ˆซ์ž ๋ฏธ๋งŒ(ํ˜น์€ ์ดํ•˜)์˜ ์ •์ˆ˜(์†Œ์ˆ˜์ ์ด ์•„๋‹Œ)๋กœ ๋œ ๋‚œ์ˆ˜๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

// min ์ด์ƒ max ๋ฏธ๋งŒ์˜ ๋žœ๋ค ์ˆซ์ž ์ƒ์„ฑ(max ๋ฏธํฌํ•จ)
const getRandomInt = function (min, max) {
  return Math.floor(Math.random() * (max - min)) + min;
};

getRandomInt(4, 5); // 4
getRandomInt(3, 5); // 3~4
getRandomInt(2, 5); // 2~4

 

๋ฉ”์„œ๋“œ ์„ค๋ช…

  • Math.random() : 0 ์ด์ƒ ~ 1๋ฏธ๋งŒ ๋ถ€๋™ ์†Œ์ˆซ์  ๋‚œ์ˆ˜ ์ƒ์„ฑ (0.932322...)
  • 1 ๋ฏธ๋งŒ์ด๋ฏ€๋กœ Math.random()์„ ๊ณฑํ•œ ์ˆ˜๋ฅผ ๋„˜์ง€ ์•Š๋Š”๋‹ค. 0.9 * 2 = 1.8 0.8 * 2 = 1.6
  • Math.floor() : ์†Œ์ˆ˜์  ๋ฒ„๋ฆฌ๊ณ  ๊ฐ€์žฅ ํฐ ์ •์ˆ˜ ๋ฐ˜ํ™˜
Math.floor(5.95); // 5
Math.floor(-5.05); // -6 (-5๋ณด๋‹ค -6์ด ์ž‘์œผ๋ฏ€๋กœ)
Math.floor(0.2); // 0
Math.floor(-0.2); // -1 (-0.2๋ณด๋‹ค -1์ด ๋” ์ž‘๋‹ค)

 

์›๋ฆฌ

  • max๋Š” 8, min์€ 2๋ผ๊ณ  ๊ฐ€์ •ํ•˜๊ณ  ์ด ๋‘˜์„ ๋นผ๋ฉด ๋‘ ์ˆ˜ ์‚ฌ์ด์˜ ์ฐจ์ด๊ฐ’ 6์ด ๋‚˜์˜จ๋‹ค.
  • ์ฐจ์ด๊ฐ’ 6์— Math.random()์„ ๊ณฑํ•˜๋ฉด ํ•ญ์ƒ 0 ~ 5.999... ์‚ฌ์ด์˜ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  • ์˜ˆ๋ฅผ๋“ค์–ด Math.random() ๊ฐ’์ด 0.999์ด๋ฉด 6 * 0.999 = 5.994๊ฐ€ ๋œ๋‹ค.
  • Math.floor()๋ฅผ ์ด์šฉํ•ด ์†Œ์ˆ˜์ ์„ ๋ฒ„๋ฆฌ๋ฉด 5๊ฐ€ ๋œ๋‹ค.
  • ์—ฌ๊ธฐ์— min ๊ฐ’ 2๋ฅผ ๋”ํ•˜๋ฉด 5 + 2 = 7์ด ๋œ๋‹ค.
  • ๋งŒ์•ฝ Math.random() ๊ฐ’์ด 0.1์ด๋ผ๋ฉด 0.1 * 6 = 0.6์ด๊ณ , Math.floor()๋ฅผ ์ ์šฉํ•ด์„œ ์†Œ์ˆ˜์ ์„ ๋ฒ„๋ฆฌ๋ฉด 0์ด ๋œ๋‹ค. ์—ฌ๊ธฐ์— min ๊ฐ’์„ ๋”ํ•˜๋ฉด ํ•ญ์ƒ min ์ด์ƒ์ด ๋˜๋„๋ก ๋ณด์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์œ„ ๊ณผ์ •์„ ํ†ตํ•ด ํ•ญ์ƒ min ~ max - 1 ์‚ฌ์ด์˜ ๋‚œ์ˆ˜๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค

 

์ฐธ๊ณ 

max ์ˆ˜๊นŒ์ง€ ํฌํ•จํ•œ ๋‚œ์ˆ˜๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด max - min์— 1์„ ๋”ํ•ด์ค€๋‹ค.

Math.floor(Math.random() * (max - min + 1)) + min; // max ํฌํ•จ
Math.floor(Math.random() * (max - min)) + min; // max ๋ฏธํฌํ•จ

 

Lodash ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ random ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋” ๊ฐ„ํŽธํ•˜๊ฒŒ ๋‚œ์ˆ˜๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

_.random(1, 999); // 1~999 ์‚ฌ์ด์˜ ๋‚œ์ˆ˜ ์ƒ์„ฑ
_.random(10); // 0~10 ์‚ฌ์ด์˜ ๋‚œ์ˆ˜ ์ƒ์„ฑ(ํ•˜๋‚˜์˜ ์ธ์ž๋งŒ ๋„˜๊ธฐ๋ฉด 0์ด ๊ธฐ๋ณธ๊ฐ’์ด ๋จ)

 

๋žœ๋ค ์œ ์ € / ์ฝ”๋ฉ˜ํŠธ ์ƒ์„ฑ


"0 ์ด์ƒ ~ randomUser ๋ฐฐ์—ด length ๋ฏธ๋งŒ"์˜ ๋žœ๋ค ์ˆซ์ž ์ƒ์„ฑ ํ›„, ํ•ด๋‹น ์ˆซ์ž๋ฅผ ์ธ๋ฑ์Šค๋กœ ์œ ์ € ์ด๋ฆ„์„ ๊ฐ€์ ธ์˜จ๋‹ค.

const comment = {};
comment.userName = randomUser[getRandomInt(0, randomUser.length)];

 

๋žœ๋ค ์ฝ”๋ฉ˜ํŠธ ์—ญ์‹œ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ฐ€์ ธ์˜จ๋‹ค

comment.message = randomMessage[getRandomInt(0, randomMessage.length)];

 

๋‚ ์งœ ํฌ๋งท ๋ณ€๊ฒฝ ํ•จ์ˆ˜


new Date()๋กœ ๋‚ ์งœ ๊ฐ์ฒด ์ƒ์„ฑ ํ›„ ์ƒ์„ฑํ•œ ๋‚ ์งœ ๊ฐ์ฒด๋Š” ํฌ๋งท ๋ณ€๊ฒฝ ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด 2021-02-11 10:34:22 ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•ด์„œ ์‚ฌ์šฉ. ํ†ต์ผ์„ฑ์„ ์œ„ํ•ด 10๋ฏธ๋งŒ์˜ ํ•œ์ž๋ฆฌ๋Š” ์•ž์— 0์„ ๋ถ™์—ฌ ๋‘์ž๋ฆฌ๋กœ ๋ฐ”๊ฟ”์„œ ๋ณด์—ฌ์ฃผ๋ฉด ์ข‹๋‹ค.

// 10๋ฏธ๋งŒ(ํ•œ์ž๋ฆฌ)์ผ๋• ์•ž์— 0 ์ถ”๊ฐ€ํ•˜์—ฌ 2์ž๋ฆฌ๋กœ ๋ณ€๊ฒฝ
// 0 → 09
function padLeft(date) {
  if (date < 10) {
    return '0' + String(date);
  }
  return String(date);
}

 

// ๋‚ ์งœ ํฌ๋งท ๋ณ€๊ฒฝ ํ•จ์ˆ˜. ์—ฐ๋„๋Š” ํ•ญ์ƒ 4์ž๋ฆฌ ์ด๋ฏ€๋กœ padLeft ํ•จ์ˆ˜๋กœ 0์„ ์ถ”๊ฐ€ํ•  ํ•„์š” ์—†๋‹ค.
function getFormattedDate(date) {
  const yyyy = date.getFullYear();
  const month = padLeft(date.getMonth() + 1);
  const dd = padLeft(date.getDate());
  const HH = padLeft(date.getHours());
  const mm = padLeft(date.getMinutes());
  const ss = padLeft(date.getSeconds());

  const format = [yyyy, month, dd].join('-') + ' ' + [HH, mm, ss].join(':');

  return format;
}

 

์ตœ์ข… ๊ฒฐ๊ณผ๋ฌผ ์˜ˆ์ œ


const generateNewComment = () => {
  const comment = {};
  comment.userName = randomUser[getRandomInt(0, randomUser.length)];
  comment.message = randomMessage[getRandomInt(0, randomMessage.length)];
  comment.created_at = getFormatDate(new Date());

  return comment;
};

/*
{
    userName: '์˜ˆ์„ธํฌ',
    message: '๊ด‘์•ผ์—์„œ ๋ฌด์—‡์„ ๋ณด๋‚ด๋Š”...',
    created_at: '2021-02-11 12:34:05'
}
*/

 


๊ธ€ ์ˆ˜์ •์‚ฌํ•ญ์€ ๋…ธ์…˜ ํŽ˜์ด์ง€์— ๊ฐ€์žฅ ๋น ๋ฅด๊ฒŒ ๋ฐ˜์˜๋ฉ๋‹ˆ๋‹ค. ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ•ด ์ฃผ์„ธ์š”
๋ฐ˜์‘ํ˜•